从完整引用 .net 标准库是否需要运送系统。* 程序集

Does referencing .net standard lib from full require shipping system.* assemblies

我注意到在从我的 .net 完整项目 (4.6.1) 中引用 .net 标准库 (1.4) 后,我的输出文件夹中充满了 System.*.dll 程序集。

这是否意味着如果我以完整框架为目标但引用 .net 标准库,我必须随附它使用的所有系统库的 .net 标准版本?

通常情况下,当您创建一个 .NET 标准库时,您就想做 。在您的 .csproj 文件中,您将更改

<TargetFramework>netstandard1.4</TargetFramework>

<TargetFrameworks>netstandard1.4;net45</TargetFrameworks>

注意添加 s 到标签。

执行此操作并为库生成 NuGet 包后,库将直接支持 .net 4.5 和 netstandard。

举个例子,这里来自Json.NET's csproj file.

<TargetFrameworks Condition="'$(DotnetOnly)'==''">net45;net40;net35;net20;netstandard1.0;netstandard1.3;portable-net45+win8+wpa81+wp8</TargetFrameworks>

因此它将为 .NET 4.5、.NET 4.0、.NET 3.5、.NET 2.0、netstandard 1.0、netstandard 1.3 和针对 net45、win8、wpa81 和 wp8 的 PCL 库生成 DLL ,所有这些 dll 都将打包到 NuGet 包中,并且在您引用该包时只会使用最接近的匹配项。