2012-03-31 62 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"); 

和运行时间错误是“TypeInitializationException”。什么从.NET v3.5更改为4.0会导致这种情况?我该如何解决它?

更新:这里是异常详细信息:

> 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 2012-03-31 14:46:15

+3

是啊,什么是内部异常? – 2012-03-31 14:46:49

+0

如何获得“内部异常? – SpokaneDude 2012-03-31 14:53:35

回答

2

我认为这是什么毛病类初始化初始化失败类型。当你没有显示那么多的代码时,真的很难看到会发生什么。如果你在阅读MDSN它说:

当一个类初始化失败初始化一个类型,被创建并传递给 异常的类型的类初始化抛出一个参考 TypeInitializationException。 TypeInitializationException的InnerException 属性包含底层 异常。

TypeInitializationException使用具有值0x80131534的HRESULT COR_E_TYPEINITIALIZATION, 。

有关 TypeInitializationException实例的初始属性值列表,请参阅TypeInitializationException异常 构造函数。

参考here

所以知道我会看着InnerException,看看怎么回事。

编辑

拥有了更多地了解你的代码。这可能是获取InnerException

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

类初始化器失败通常意味着一些当初始化一些静态字段或执行静态构造函数时抛出了异常,看看'InnerException'必须有帮助 – Vlad 2012-03-31 14:52:57

+0

是的,除此之外,这也是为什么OP需要向我们提供'InnerException'。 – Arion 2012-03-31 14:54:56

+0

我发现它!compileDate在本月有垃圾(Mara)......谢谢大家......我真的很欣赏我吨。 – SpokaneDude 2012-03-31 14:58:36