.NET 4.0抛出TypeInitializationException

时间:2012-03-31 14:42:08

标签: c# .net .net-4.0

安装.NET 4.0后,我现在在此声明中获得异常:

 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 个答案:

答案 0 :(得分:2)

我认为类初始化程序无法初始化类型是错误的。当你没有显示那么多代码时,很难看到会发生什么。如果您在mdsn上阅读,它会说:

  

当类初始化程序无法初始化类型时,a   创建TypeInitializationException并传递对该引用的引用   类型的类初始值设定项抛出的异常。 InnerException   TypeInitializationException的属性保存底层   异常。

     

TypeInitializationException使用HRESULT COR_E_TYPEINITIALIZATION,   值为0x80131534。

     

获取实例的初始属性值列表   TypeInitializationException,请参阅TypeInitializationException   构造

参考here

所以我知道我会看InnerException,看看有什么事情发生。

修改

了解有关您的代码的更多信息。这可能是获取InnerException

的方法
try
{
    mainForm.versionNumber.Contains("BETA");
}
catch(TypeInitializationException ex)
{
    var inner= ex.InnerException;
}