NuGet包依赖适配疑问:.NET Framework 4.6.1引用包的依赖项规则
结论
你的.NET Framework 4.6.1项目引用该包时,不需要下载那6个System.*依赖包。
规则说明
NuGet解析包依赖时会遵循「最近匹配优先」的规则:
- 优先匹配和项目目标框架完全对应、或同体系下更低版本的明确声明依赖组,不会优先走.NET Standard兼容 fallback 逻辑
- 你给出的.nuspec里明确声明了
.NETFramework4.6对应的空依赖组,而.NET Framework 4.6.1属于.NET Framework体系,且是4.6的更高兼容版本,会直接命中这个空依赖组,不会降级到.NET Standard 1.3的依赖组去拉取额外依赖
补充说明
如果该包没有声明.NETFramework4.6及更高版本的.NET Framework专属依赖组,NuGet才会触发.NET Standard兼容匹配逻辑:因为.NET Framework 4.6.1兼容.NET Standard 1.4,而.NET Standard 1.4向下兼容1.3,此时才会拉取.NET Standard 1.3组下的依赖。另外该组下标注了exclude="Compile"的依赖包,即使被引入也仅作为运行时依赖,不会参与项目编译。
内容的提问来源于stack exchange,提问作者Brie
相关产品推荐
相关产品推荐

