【发布时间】:2018-09-10 21:56:30
【问题描述】:
我正在使用一个 NuGet 包,其中包含 2 个目标框架的程序集:net45 和 netstandard1.5
我的项目是针对 net471(与 netstandard1.5 兼容)。当我添加包时,它会从 net45 文件夹中复制 dll。如何强制 NuGet 使用标准文件夹中的 dll?
net45版本的问题是需要老版本的依赖包,标准dll没有依赖。
【问题讨论】:
-
把你项目的目标改成netstandard1.5?
-
无法将我的项目目标更改为 netstandard。 WPF 应用程序
-
NuGet 不支持此功能。 NuGet 将使用最接近匹配的程序集。更具体的目标框架获胜。因此,在这种情况下,您的项目以 .NETFramework 为目标,因此 NuGet 使用 NuGet 包中的 .NETFramework 程序集。您需要自己在项目中直接引用 .NET Standard 程序集。
-
您应该与包所有者讨论以了解原因。我有一些公共 NuGet 包,如 #SNMP 及其多个目标平台,如
net45和netstandard13,行为不同(因此用户不能互换使用程序集)。 -
这是 System.Net.Http 的一个大问题。对于一个支持netstandard1.3和netstandard2.0的NuGet包,安装在一个面向.NET 4.6.1的项目下,它总是选择netstandard2.0项目,这很糟糕,因为.NET 4.6.1爆炸死了由于使用netstandard2.0,不存在的System.Net.Http版本。因此,我需要在一个以 .NET 4.6.1 为目标的项目中明确地将 NuGet 包设置为以 netstandard1.3(而不是 netstandard2.0)为目标,以实现这项工作。我必须手动更改对 1.3 DLL 的项目引用吗?
标签: .net visual-studio nuget .net-standard package-managers