从以 4.5.1 为目标的 .csproj 引用面向 4.5.2 的程序集会出错



我有一个针对4.5.2的库。当我从.csproj目标4.5.1引用这个库时,它错误地说:

C:\程序文件 (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): 警告MSB3274:主要引用"XXX,版本=1.0.0.0, 区域性=非特定,处理器体系结构=MSIL"无法解析 因为它是针对".NETFramework,版本=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.1引用库目标4.5.2,它不应该工作吗?

仅仅因为它是就地升级并不意味着您可以引用转发版本。最终,您要引用的包是 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 的补充)

最新更新