安装.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:
答案 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;
}