【问题标题】:Upgrade to .Net 4.5 causes assembly to fail?升级到 .Net 4.5 会导致程序集失败?
【发布时间】:2013-05-27 05:27:05
【问题描述】:

我有一个针对 .Net 4.0 的项目,其中一个引用的程序集是 .Net 4.5。

在我安装 .Net 4.5 之前,它运行良好,但是在安装之后,我收到了五个关于目标 .Net 版本的警告:

*无法解析主要参考“xxxx.Library, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL” 因为它是针对“.NETFramework,Version=v4.5”构建的 框架。这是比当前目标更高的版本 框架“.NETFramework,Version=v4.0”

还有这个:

主要参考“Microsoft.TeamFoundation.Build.Workflow, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 无法解析,因为它有一个 间接依赖于框架程序集“System.IO.Compression, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089" 在当前的目标框架中无法解决。 “.NETFramework,版本=v4.0”。要解决此问题,请删除 参考“Microsoft.TeamFoundation.Build.Workflow, 版本=10.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 或将您的应用程序重新定位到 包含“System.IO.Compression, 版本=4.0.0.0,文化=中立, PublicKeyToken=b77a5c561934e089"。测试

为什么 Visual Studio 讨厌我?如果它可以在更新到 4.5 之前编译,那么目标框架并没有改变,并且它仍然适用于 VS2010 上使用 .Net 4 的同事,为什么我会被塞满?

【问题讨论】:

  • 我遇到了类似的问题,而且似乎只发生在安装了 .NET Frameworks 4.5 的情况下。我的项目针对的是 4.0 版框架,我引用的 DLL 的反汇编显示该程序集也是针对 4.0 版框架构建的。但是,我收到一个无效错误,即引用的 DLL 是针对 4.5 版框架构建的。 stackoverflow.com/questions/18360561/…

标签: c# .net visual-studio-2012


【解决方案1】:

错误消息解释了问题 - .NET 4 应用程序无法引用 .NET 4.5 dll。将您的应用也更改为 .NET 4.5,或将 dll 更改回 .NET 4。

【讨论】:

  • 那为什么在更新到 4.5 之前这个工作有效呢?全部编译愉快,没有警告或错误?
  • 如,如果我卸载 .Net 4.5,这个错误就会消失,我可以编译项目...?
  • 除了可能不明显,因为问题表明程序集一直是 4.5 并且以前可以工作,但是一旦安装了 .NET 4.5,由于某种原因它就停止了。
  • VS 没有关于“未知框架版本”或类似的警告?我怀疑它实际上是将 .NET 4.5 dll 编译为 .NET 4,因为 .NET 4.5 不可用。无论哪种方式,这首先都不应该起作用。如果是这样,那就是侥幸。如果您确实希望它能够可靠地工作,请更改应用程序框架。
  • 我会更改您给出的答案,因为当前的答案并不是问题的真正答案。
【解决方案2】:

这是因为出于 Microsoft 最熟悉的原因,.NET Framework 4.5 是一个就地更新replaces 您的 .NET Framework 4 文件(而不是并行安装)。如果您查看 C:\Windows\Microsoft.NET,您将找不到 4.5 文件夹 - 它替换了 4.0 文件夹中的文件。

所以它之前编译的原因是该dll当时是一个.Net 4.0 dll。现在它已被 4.5 取代。

【讨论】:

    猜你喜欢
    • 2012-08-15
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多