问题 升级到.Net 4.5导致程序集失败?


我有一个针对.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,   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089“   这在目前的目标框架中无法解决。   ” .NETFramework,版本= 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“。测试

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


6135
2018-05-31 11:41


起源

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


答案:


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


11
2018-05-31 11:44



为什么在更新到4.5之前这个工作呢?所有编译都愉快,没有警告或错误? - Dave
除了可能不明显,因为问题表明程序集一直是4.5并且以前工作但是一旦安装了.NET 4.5,它就出于某种原因停止允许它。 - Chris
VS没有关于“未知框架版本”或类似内容的警告?我怀疑它实际上是将.NET 4.5 dll编译为.NET 4,因为.NET 4.5不可用。无论哪种方式,这都不应该起作用。如果确实如此,那就是侥幸。如果您希望它可靠地工作,请更改应用程序框架。 - thecoop
我会改变你给出的答案,因为现在的答案并不是问题的答案。 - Joetjah
@thecoop这似乎是矛盾的 stackoverflow.com/a/12631425/881111。 - Nuzzolilo


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

所以之前编译的原因是dll是一个.Net 4.0 dll。现在它被4.5替换了。


5
2017-07-26 10:19