【问题标题】:Package multiple project into a single NuGet Package将多个项目打包到一个 NuGet 包中
【发布时间】:2017-05-11 16:35:14
【问题描述】:
我正在尝试深入了解 NuGet 包系统。最近我发布了一个 NuGet 类库,仅针对 .NET Framework 4.5.2,但根据需要,我决定创建一个针对 .NETStandard 1.4 的新类库。
这就是我迷路的地方。我是否可以在一个 NuGet 包中定位多个框架,以拥有两个不同项目的情况?
删除 .NET Framework 4.5.2 项目并将其替换为我的 .NETStandard 1.4 项目是否有意义?代码 100% 相同。
有任何建议或最佳实践来应对这种情况吗?
【问题讨论】:
标签:
c#
nuget
nuget-spec
.net-standard
【解决方案1】:
如果您需要支持 .NET Framework 4.5.2,则需要根据 compatibility matrix 将 .NET Standard 的版本降低到 1.2,因为 .NET Standard 1.4 包只能在 .NET Framework 4.6 上使用。 1+。
如果您无法做到这一点,您可以多目标您的项目,以便为 .NET Standard 和 .NET Framework 的版本构建同一个项目,并将其打包到同一个 NuGet 包中.引用该包的 .NET Framework 项目将优先使用 .NET Framework dll,而不是同一包中的 .NET Standard dll。
您可以通过更改 .NET Standard 项目来做到这一点
<TargetFramework>netstandard1.4</TargetFramework>
到
<TargetFrameworks>net452;netstandard1.4</TargetFrameworks>
通过将属性更改为 TargetFrameworks(复数),项目现在将被构建两次 - 每个指定框架一次。