为何.NET Framework4.7.2安装System.Text.Json时额外引入System.ValueTuple包
原因说明
这是NuGet的目标框架匹配逻辑导致的:
- System.Text.Json 5.0.2的NuGet包内提供了多套适配不同运行环境的构建产物,其中包含面向.NET Framework 4.6.1的专属构建,以及面向.NET Standard 2.0的通用构建
- 针对.NET Framework系列的项目,NuGet默认会优先匹配最接近的具体.NET Framework版本的构建,而非直接使用.NET Standard版本的构建。.NET Framework 4.7.2本身向下兼容4.6.1版本,因此NuGet自动选择了面向4.6.1的构建版本
- 面向.NET Framework 4.6.1的构建确实声明了对System.ValueTuple等依赖包的要求,这就是安装时会提示安装额外依赖的原因
注意事项
这些额外安装的依赖包不会和.NET Framework 4.7.2内置的同类型库冲突:运行时会优先使用框架内置的更高版本实现,额外安装的依赖仅作为兼容备用,不会影响程序的正常运行。
可选解决方法
如果不需要这些额外依赖,可以手动编辑项目的.csproj文件,添加配置强制优先使用.NET Standard 2.0版本的构建:
<PropertyGroup> <PackageTargetFallback>netstandard2.0</PackageTargetFallback> </PropertyGroup>
保存配置后重新安装System.Text.Json 5.0.2包,就不会再拉取.NET Framework 4.6.1专属的依赖项了。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

