【问题标题】:How to link a .NET 2.0 assembly in a .NET 4.0 solution如何在 .NET 4.0 解决方案中链接 .NET 2.0 程序集
【发布时间】:2011-03-29 17:11:57
【问题描述】:

我有一个使用 .NET 4.0 构建的项目。我有很多代码转换回 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 目录中的任何地方,所以我对手动加载它有点怀疑。

【问题讨论】:

    标签: c# .net assemblies linker version


    【解决方案1】:
    1. 首先找到它的所有依赖项。您没有在此处列出它们的事实令人不安。
    2. 您的应用程序是否直接引用了所有上述依赖项。

    【讨论】:

      【解决方案2】:

      您还没有接近诊断出问题所在。 Dumpbin.exe 不会向您显示任何托管程序集不会显示的任何内容。这也不是混合 CLR 依赖项特有的问题。

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

      【讨论】:

        猜你喜欢
        • 2011-06-14
        • 1970-01-01
        • 2018-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多