C# TypeInitializationException:'&书信电报;模块>';抛出异常
我已经在谷歌上进行了大量的搜索和调试,但我不知道是什么导致了这个异常。根据传闻,重新安装.NET framework有时会解决此问题,但作为一个解决方案,它似乎有点粗略:C# TypeInitializationException:'&书信电报;模块>';抛出异常,c#,wpf,exception,.net-3.5,C#,Wpf,Exception,.net 3.5,我已经在谷歌上进行了大量的搜索和调试,但我不知道是什么导致了这个异常。根据传闻,重新安装.NET framework有时会解决此问题,但作为一个解决方案,它似乎有点粗略: TypeInitializationException: The type initializer for '<Module>' threw an exception. The C++ module failed to load during appdomain initialization
TypeInitializationException: The type initializer for '<Module>' 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 <CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(LanguageSupport* )
at <CrtImplementationDetails>.LanguageSupport._Initialize(LanguageSupport* )
at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )
有什么线索吗
上下文
这是一个WinForms应用程序,用C#编写,有一些新组件用WPF编写。我们得到的崩溃报告不包含更多的上下文,而不是我正在展示的(堆栈跟踪等),我们没有做任何C++,托管的或其他的。
我无法重现此崩溃,但对一些客户的远程诊断表明,重新安装.NET framework可能会为该客户解决此问题
报告此崩溃的客户会多次这样做,并且在重新安装.NET framework或恢复到仅使用.NET 2.0的较旧版本的应用程序之前,他们似乎无法使用该应用程序
链接
指出.NET Framework或visual studio的测试版与此崩溃之间可能存在的连接,但在本例中似乎不太可能
另一个可能的连接可能是VisualC++ 2005可重新分配。
< P>您正在查看C++的核心代码,C++/CLI编写的代码。名称
是所有全局C++/CLI函数的类名。它很早就爆炸了,就在程序集加载之后,模块初始化器失败了。LoadWpfGfx()完成的确切工作在我所知的任何地方都没有记录,但很容易猜测。它正在加载一个实现图形界面(可能是DirectX接口层)的非托管DLL
这是机器特有的问题。该函数检查注册表中要加载的DLL是否正确,然后使用LoadLibrary()加载它。很明显,DLL丢失了。您的客户需要重新稳定机器,然后重新安装.NET。如果他们仍然有问题,那么他们可以使用SysInternals的ProcMon工具查看正在搜索的注册表项和DLL。我收到了相同的错误消息。我使用的组件需要.NETFramework 3.0,但我的应用程序的目标是2.0。在机器上安装了3.0的用户在运行我的应用程序时没有问题,但没有安装的用户无法运行
这并不是我所期望的许多人会遇到的问题,但这是可能的。这让我头痛了好几个月。 我的代码是使用Oxygene Pascal编译器构建的,与VS 2012完全集成。TypeInitializationException在..cctor以某种方式无法完成其工作时发生 我做了些什么来找出为什么在远程主机上访问IIS 7.5下的WCF网站web服务时,我的a C#类库代码运行,Oxygene类库代码不断失败,但这两种代码在本地范围内运行得非常好,在进行VS 2012单元测试时运行得非常好 好的,这是一个类库 1.我在CS ToolboxCS.CS中编写了一个类库 2.我在Oxygene ToolboxPAS.pas中编写了相同的类库 3.一个ToolboxCS远程运行,ToolboxPAS远程故障 4.让我们看看这两个代码 (4a) 4b)含氧基因样品
namespace ToolboxPAS;
interface
uses
System;
VAR
Stop_Time: String := "1949.Mar.19";
implementation
end.
然后我用ILSpy.exe查看生成的代码,发现反汇编到CS的代码是相同的。但是通过ILSPy.exe查看这两个示例的程序集信息,我可以看到许多差异,其中一些没有效果,但下面显示的是Oxygene ToolboxPAS.pas类库的杀手,它应该在IIS 7.5->w3wp.exe->XYXYXY.dll->ToolboxPAS.dll上运行
{$IFDEF DEBUG}
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default or
DebuggableAttribute.DebuggingModes.DisableOptimizations or
DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints or
DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
{$ENDIF}
换句话说,如果执行调试生成,cs代码将不会在程序集信息文件中显示具有此属性的程序集。但您将看到生成并使用ILSpy.exe查看生成的DLL的这些属性
在我为调试构建将此属性添加到ToolboxPAS.pas程序集信息文件(如上所示)后,它不再在调用时引发InitializationException,以仅访问其中的一个简单变量
由于我更改了大型DLL类库(12个DLL)的所有程序集信息文件中的设置,当作为WCF wen site web service部署到远程web服务器IIS 7.5时,它们都像嗅探一样运行。对于我来说,错误发生在使用配置文件中的值初始化的类中有一个静态变量时
配置文件没有值,这导致在初始化类时出现异常 您能提供更多信息吗?您使用的是什么语言,发生此异常时,您正在尝试执行什么操作,例如(看起来像托管C++)?考虑到你目前给出的少量信息,很难猜测基伦的观点是否正确;我将在问题的主体部分补充更多内容;谢谢你,汉斯。我将尝试访问存在此问题的计算机,以便使用procmon跟踪注册表查找。
{$IFDEF DEBUG}
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default or
DebuggableAttribute.DebuggingModes.DisableOptimizations or
DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints or
DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
{$ENDIF}