从.csproj目标4.5.1引用程序集目标4.5.2会出错

时间:2018-04-10 06:13:38

标签: c# .net msbuild upgrade

我有一个定位4.5.2的图书馆。当我从.csproj定位4.5.1引用此库时,它错误地说:

  

C:\ Program Files   (86)\的MSBuild \ 14.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(1820,5):   警告MSB3274:主要参考" XXX,版本= 1.0.0.0,   文化=中立,处理器架构= MSIL"无法解决   因为它是针对" .NETFramework构建的,Version = v4.5.2"   框架。这是比当前目标版本更高的版本   框架" .NETFramework,版本= v4.5.1"。

根据我的理解,4.5.14.5.2已到位升级。通过就地升级,我了解如果我将.csproj升级到4.5.2并且当我的目标部署计算机仍然有4.5.1时,除非我的升级二进制文件使用特定功能,否则一切都应该正常工作4.5.2中未提供的4.5.1。到目前为止我是否正确?如果我从项目定位4.5.2引用库定位4.5.1,那么使用类似的逻辑,不应该有效吗?

1 个答案:

答案 0 :(得分:1)

仅仅因为它是就地升级并不意味着您可以引用正向版本。最终,您要引用的包是4.5.2,这意味着它可以使用4.5.2中仅存在的功能。因此,从4.5.1项目中定位它是不安全,因为完整的说法是"我的目标是4.5.1"是的,如果有人 4.5.1,它应该运行。哪个:这不会。

所以:如果你想要定位目前以4.5.2为目标的软件包,你有两个选择:

  • 将您的项目更改为目标4.5.2
  • 查看您要引用的包是否可以调整为目标4.5.1(代替4.5.2而不是4.5.2)