TypeInitializationException:"<Module>"的类型初始值设定项引发了异常

Joh*_*don 7 c# wpf exception .net-3.5

我已经广泛搜索和调试,我无法弄清楚导致此异常的原因.有趣地重新安装.NET框架有时会解决这个问题,但它似乎有点粗略作为修复:

TypeInitializationException: The type initializer for '&lt;Module&gt;' threw an exception.
    The C++ module failed to load during appdomain initialization.

      The system cannot find the file specified

StackTrace:
   at CModuleInitialize.LoadWpfGfx(CModuleInitialize* )
   at CModuleInitialize.{ctor}(CModuleInitialize* )
   at ?A0x828d0bb1.??__E?A0x828d0bb1@cmiStartupRunner@@YMXXZ()
   at _initterm_m((fnptr)* pfbegin, (fnptr)* pfend)
   at &lt;CrtImplementationDetails&gt;.LanguageSupport.InitializePerAppDomain(LanguageSupport* )
   at &lt;CrtImplementationDetails&gt;.LanguageSupport._Initialize(LanguageSupport* )
   at &lt;CrtImplementationDetails&gt;.LanguageSupport.Initialize(LanguageSupport* )
Run Code Online (Sandbox Code Playgroud)

有线索吗?

上下文

这是一个WinForms应用程序,用C#编写,带有一些用WPF编写的新组件.崩溃报告我们得到的内容不包括我正在显示的内容(堆栈跟踪等),我们没有做任何C++,托管或其他方式.

我无法重现此崩溃,但是少数客户的远程诊断表明重新安装.NET框架可能会为该客户解决此问题.

报告此崩溃的客户会多次这样做,看起来他们在重新安装.NET框架之前无法使用该应用程序,或者他们还原为仅使用.NET 2.0的应用程序的旧版本

链接

一些链接表明.NET Framework的beta版本或visual studio与此崩溃之间可能存在连接,但在这种情况下似乎不太可能.

另一种可能的连接可能是Visual C++ 2005可再发行组件.

Han*_*ant 12

您正在查看PresentationCore的内容,即使用C++/CLI编写的代码.该名称<Module>是所有全局C++/CLI函数的类名.它早期炸弹,在装配完成后,模块初始化器失败了.LoadWpfGfx()完成的确切工作没有记录在我所知道的任何地方,但很容易被猜到.它正在加载一个实现图形界面的非托管DLL,可能是DirectX界面层.

这是机器特定的问题.该函数检查注册表是否加载了正确的DLL,然后使用LoadLibrary()加载它.很明显,DLL丢失了.您的客户需要再次使其机器稳定,然后重新安装.NET.如果他们仍有问题,那么他们可以使用SysInternals的ProcMon工具来查看正在搜索的注册表项和DLL.