2012-03-31 10 views
1

を投げ、私は今、この文で例外を取得しています:.NET 4.0、.NET 4.0をインストールした後TypeInitialization例外

if (mainForm.versionNumber.Contains("BETA")) 

これはのversionNumberが定義されている方法です。

public static string versionNumber = "1.1.1 " + compileDate.ToString("dd-MMM-yyyy"); 

と実行-time errorrは "TypeInitializationException"です。これを引き起こす.NET v3.5から4.0に変更されたのは何ですか?そして私はそれをどのように修正するのですか?

UPDATE:ここでは、例外の詳細です:

> System.TypeInitializationException was unhandled Message=The type 
> initializer for 'Media_Inventory_Manager.mainForm' threw an exception. 
> Source=PragerMediaInventoryManager 
> TypeName=Media_Inventory_Manager.mainForm StackTrace: 
>  at Media_Inventory_Manager.Prager.Main() in D:\Prager Software\Media Inventory Manager\Program.cs:line 36 
>  at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 
>  at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
>  at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
>  at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
>  at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
>  at System.Threading.ThreadHelper.ThreadStart() InnerException: System.FormatException 
>  Message=The string was not recognized as a valid DateTime. There is a unknown word starting at index 0. 
>  Source=mscorlib 
>  StackTrace: 
>    at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) 
>    at System.DateTime.Parse(String s, IFormatProvider provider) 
>    at Media_Inventory_Manager.mainForm..cctor() in D:\Prager Software\Media Inventory Manager\Main Form.cs:line 38 
>  InnerException: 
+1

例外の詳細をすべて追加したい場合があります。 – Femaref

+3

ええ、内部の例外は何ですか? –

+0

どうすれば "内部例外"を得ることができますか? – SpokaneDude

答えて

2

私はそれが初期化子が型を初期化するために失敗したクラスで何か間違っていると思います。それほど多くのコードを表示していないときに何が起こるかは本当に分かりません。クラス初期化子が型を初期化するために失敗した場合、

を TypeInitializationExceptionが作成され、タイプのクラス初期化子によってスロー 例外への参照が渡されます:あなたはMDSNに読めば、それは述べています。 TypeInitializationExceptionのInnerException プロパティは、基になる 例外を保持します。

TypeInitializationExceptionは、値0x80131534を持つHRESULT COR_E_TYPEINITIALIZATION を使用します。

TypeInitializationExceptionのインスタンスの初期プロパティ値の一覧については、TypeInitializationException コンストラクタを参照してください。

リファレンスhere

だから私はInnerExceptionを見て起こっていただきました!見るであろうことを知っています。あなたのコードについての詳細を知ってして

EDIT

。これは入手方法ですInnerException

try 
{ 
    mainForm.versionNumber.Contains("BETA"); 
} 
catch(TypeInitializationException ex) 
{ 
    var inner= ex.InnerException; 
} 
+2

クラスイニシャライザでの失敗は、 – Vlad

+0

そういう点を除いて、私はOPが私たちに 'InnerException'を供給する必要があるのです。 – Arion

+0

私はそれを発見しました。 !compileDateはその月にゴミを持っていました(マラ)...みなさんに感謝します...本当に、本当に感謝しています。 t。 – SpokaneDude

関連する問題