2010-08-13 110 views
2

我有一个使用.NET 4.0构建的项目。我有很多代码会很痛苦地转换回2.0。如何链接.NET 4.0解决方案中的.NET 2.0程序集

我尝试导入使用.NET 2.0构建的Dll。一切工作,直到我尝试从该DLL执行代码。它说,它无法加载指定的模块,或者它的依赖

我用DUMPBIN.EXE检查什么的一个依赖它可以有

File Type: DLL 

    Section contains the following imports: 

    mscoree.dll 
       402000 Import Address Table 
       4057F0 Import Name Table 
        0 time date stamp 
        0 Index of first forwarder reference 

        0 _CorDllMain 

所以我猜这里是该DLL尝试加载,但从2.0版找不到mscoree.dll,从而引发异常。

我试图加载手动我的目标模块

Assembly asm = Assembly.LoadFrom(dllPath); 

Visual Studio调试器现在列出模块加载,但仍不能访问它。 Windows搜索报告几十个“mscoree.dll”散落在c:\ windows目录中的任何地方,所以我对手动加载它有点怀疑。

回答

3

您并不接近诊断问题。 Dumpbin.exe不会显示任何它不会显示的任何托管程序集。这也不是混合CLR依赖的特定问题。

使用fuslogvw.exe找出缺少什么依赖项。

1
  1. 首先找到它的所有依赖关系。你没有在这里列出的事实令人不安。
  2. 你应用程序是否直接引用所有的依赖关系?
相关问题