构建.NET Framework / .NET Standard多目标项目时,net461输出文件夹中有大量程序集

时间:2017-11-08 16:00:02

标签: c# packages .net-standard .net-standard-2.0 .net-4.6.1

我有一个新的SDK风格的csproj,它针对多个框架:

<TargetFrameworks>net461;netstandard2.0</TargetFrameworks>

VS中的依赖项节点按预期列出“.NETFramework 4.6.1”和“.NETStandard 2.0” - NETStandard文件夹将“NETStandardLibrary”作为SDK依赖项。

我对多个TFM的理解是交叉编译类库以用作Full Framework dll或netstandard dll。但是,在net461输出文件夹中,我看到100+ System.xxx.dll,包括netstandard.dll。

为什么输出中的所有这些程序集都是?或者我是否误解了多个目标框架的概念?

1 个答案:

答案 0 :(得分:2)

DotNet Standard repo中的几个问题详细描述了该问题。简短的解释是:

  

原因是net471是第一个实际包含netstandard20 API的.NET Framework - 其他人使用垫片

这意味着每次引用.NETStandard nuget包时,如果.NET Framework版本低于v4.7.1,它将提取整个.NETStandard程序集。