C# 无法加载由{myassembly}导入的过程

C# 无法加载由{myassembly}导入的过程,c#,debugging,assemblies,C#,Debugging,Assemblies,当运行prorgam时,我似乎缺少一个库,当我启动项目的输出时,我在启动时遇到一个异常 A first chance exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll An unhandled exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll Additional information: A proce

当运行prorgam时,我似乎缺少一个库,当我启动项目的输出时,我在启动时遇到一个异常

A first chance exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll
An unhandled exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll

Additional information: A procedure imported by 'my assembly, Version=xx.1.1.0, Culture=neutral, PublicKeyToken=7292581204d9e04a' could not be loaded.

'ScriptX.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', No symbols loaded.
我的问题是:如何确定缺少哪个库,因为此时我看不到传递给以下对象的值:

mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) + 0x3a bytes    

你在做什么运动吗这看起来像是找不到非托管dll的问题

第一件事是确保(通过dllimport)调用的任何非托管dll或exe都部署到与生成的.Net exe相同的文件夹中

如果调用程序集的源不可用,可以尝试在该程序集上使用来搜索dllimport语句


除此之外,您可能希望启用Fusion日志查看器来跟踪程序集加载问题-请参阅此部分并了解更多详细信息

为AppDomain.AssemblyResolve事件实现处理程序。它告诉您它正在使用ResolveEventArgs.Name查找哪个程序集。如果这只是为了解决此特定程序集的故障,请使用Fuslogvw.exe。如果挂起是非托管程序集,则DependencyWalker的Profile选项可以显示LoadLibrary()调用失败的内容。SysInternals的ProcMon也可以工作,但噪音要大得多。

事实上,这些诊断有一个内置的机制

(1) 在项目属性/调试中,确保选中“启用本机代码调试”:

(2) 升起标志-它是IFEO中的注册表项,可通过“GlobalFlags”GUI访问:

(3) 从调试器运行应用程序-或在加载错误之前附加。检查(非常)详细的输出窗格。你可以跳到结尾或者寻找“错误”


更多详细信息。

在某些情况下,在使用COM时,您可能只需要取消注册并使用RegAsm.exe重新注册dll。
这就是我上周解决这个问题的原因,事情变得不同步了

很遗憾,我无法访问此DLL的源代码。如果有任何方法可以确定哪个程序集未能加载,这将是一个很大的帮助。谢谢Richard,这两个链接非常有用。谢谢你的回复,我选择了Richard的回复,因为我只是查看了他的帖子,并设法使用了融合日志。我希望我能+10这一点我们有两个开发人员在一个问题上使劲敲着头,这就直接指向了答案。非常感谢。我只想补充一点,只有在使用
windbg
连接到进程时,我才能找到该错误。应用程序需要在调试器(例如Visual studio、windbg或cdb)下运行才能查看调试输出。在图像字段中,只应输入exe文件名,而不应输入完整路径。只是为了帮助其他因为它而陷入困境的人。德语翻译为“Eine von{myassembly}importierte Prozedur konnte nicht geladen werden”,以防万一有人在谷歌上搜索这个(就像我一样)。