C# 从完整版本引用.net标准库是否需要运输系统。*程序集

C# 从完整版本引用.net标准库是否需要运输系统。*程序集,c#,.net,.net-standard,.net-standard-1.4,C#,.net,.net Standard,.net Standard 1.4,我注意到,在从.net完整项目(4.6.1)中引用了.net标准库(1.4)之后,我的输出文件夹中充满了System.*.dll程序集 这是否意味着,如果我的目标是完整的框架,但引用了.net标准库,那么我必须附带它使用的所有系统库的.net标准版本?通常,当您创建一个.net标准库时,您需要这样做。在.csproj文件中,您可以更改 <TargetFramework>netstandard1.4</TargetFramework> 因此,它将为.NET 4.5、.NE

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


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

通常,当您创建一个.net标准库时,您需要这样做。在.csproj文件中,您可以更改

<TargetFramework>netstandard1.4</TargetFramework>

因此,它将为.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包中,并且在引用包时只使用最接近的匹配项。

随机问题:您是否尝试在生成后对文件进行nuking以查看其是否仍然有效?我的猜测是,只要你不希望任何东西起作用,就可以删除它们。。。(即,不要这样做)他们似乎确实需要让它工作,这不是我们所期望的。PCL不会这样做的。这使我们的部署变得臃肿,并使我们重新考虑采用.net标准。我预计.net标准libs将使用4.6.1中的系统程序集。因为微软声称它是兼容的。嗯,它是兼容的。。。您处于“完整”状态,并且正在使用lib…不是真的,您实际上没有使用4.6.1中的BCL,只是在运行时使用。这是兼容的一个非常奇怪的定义。只有当你替换了一半的时候,它才会起作用。在我看来,这个系统并不真正兼容。我希望我在引用它们的方式上做错了什么。
<TargetFrameworks>netstandard1.4;net45</TargetFrameworks>
<TargetFrameworks Condition="'$(DotnetOnly)'==''">net45;net40;net35;net20;netstandard1.0;netstandard1.3;portable-net45+win8+wpa81+wp8</TargetFrameworks>