我有一个新的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。
为什么输出中的所有这些程序集都是?或者我是否误解了多个目标框架的概念?
答案 0 :(得分:2)
DotNet Standard repo中的几个问题详细描述了该问题。简短的解释是:
原因是net471是第一个实际包含netstandard20 API的.NET Framework - 其他人使用垫片
这意味着每次引用.NETStandard nuget包时,如果.NET Framework版本低于v4.7.1,它将提取整个.NETStandard程序集。