【问题标题】:VS2008 can't reference a .NET 3.5 assembly built in VS2010?VS2008 不能引用 VS2010 中内置的 .NET 3.5 程序集?
【发布时间】:2011-07-13 20:34:21
【问题描述】:

我知道 VS2008 不能与 .NET 4.0 一起使用,并且 .NET 4.0 程序集文件格式已从 3.5 更改。但是,我原以为由 VS2010 构建的面向 .NET 3.5 或更早版本的程序集将与 VS2008 兼容。

尝试引用 VS2010 DLL 会导致图标上出现黄色警告覆盖,以及“无法在对象浏览器中查看此项目,因为它不可用或尚未构建。请确保该项目可用且已构建。 "尝试打开引用时会弹出对话框。

VS2010 程序集正在构建为 Release/Any CPU - 这是在 Windows 7 32 位上。程序集未签名。

我错过了什么?

【问题讨论】:

    标签: .net visual-studio-2008 visual-studio-2010


    【解决方案1】:

    似乎认为程序集是由解决方案中的另一个项目创建的。也许曾经是这种情况,您从解决方案中删除了该项目?删除程序集引用并使用“浏览”选项卡将其添加回来。

    【讨论】:

    • 这是一个第三方程序集,从未作为 VS 2008 解决方案的一部分构建。我在 VS 2010 中构建了一个新版本的 DLL,并通过删除引用并通过浏览将其重新添加到 VS 2008 解决方案中。
    • 啊,我很抱歉不清楚。我的意思是表明这个问题不是你建议的。在构建 DLL 时调整设置时,我经常删除和重新添加引用。不过,谢谢您的想法。
    • 我不知道,告诉我们如何重现这个问题。将 VS2010 构建的程序集削减到其核心,但仍然存在此问题并将其发布到文件共享服务中。
    【解决方案2】:

    事实证明,发生了构建后操作,其中包括调用 ildasm 和 ilasm 以重命名程序集中的方法。在此过程中,显然 DLL 中的某些内容已损坏。

    当我不执行构建后活动时,可以在 VS2008 中引用程序集(针对 .NET 3.5)就好了。

    【讨论】:

    • 使用 VS2008 附带的 ildasm 和 ilasm 实用程序修复了这个问题。具体来说,我刚刚运行了 Visual Studio 9.0 版本的 VSVARS32.bat。可能有一些开关可以让 VS2010 的 ildasm 和 ilasm 向后兼容,但我在 ilasm 帮助中没有看到任何明显的内容。
    猜你喜欢
    • 2010-12-31
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2011-02-22
    • 2011-02-04
    • 2012-02-20
    相关资源
    最近更新 更多