DevOps构建管道NuGetCommand报NU1202兼容性错误排查
解决NuGet NU1202兼容性错误的方案
错误原因分析
第一个错误(net70-windows不兼容)
当你用<TargetFramework>net7.0-windows</TargetFramework>构建发布MyPackage时,NuGet会根据项目默认配置自动补充具体Windows版本号(比如net7.0-windows10.0.17763)作为包的实际目标框架标识符(TFM)。但引用该包的项目若仅指定net7.0-windows(不带具体版本),NuGet会将其解析为最低兼容Windows版本,与包实际TFM不匹配,触发NU1202错误。
第二个错误(版本号后缀.0不兼容)
更新TargetOSVersion后,引用项目的TFM变为net70-windows10.0.17763.0(带.0后缀),而你的MyPackage的TFM是net70-windows10.0.17763(无.0后缀)。NuGet对TFM版本号匹配严格,后缀差异会被判定为框架不兼容。
解决方法
统一TFM版本格式
- 在MyPackage的项目文件中,明确指定带具体版本的TFM,例如:
<TargetFramework>net7.0-windows10.0.17763</TargetFramework> - 同时将引用该包的项目的TargetFramework也设置为完全相同的
net7.0-windows10.0.17763,确保两者TFM完全一致(注意不要添加.0后缀)。
- 在MyPackage的项目文件中,明确指定带具体版本的TFM,例如:
兼容多版本配置(可选)
若需要让包支持多个Windows版本,可在MyPackage的项目文件中指定多个TFM,或通过<SupportedOSPlatformVersion>设置最低兼容版本,示例:<TargetFramework>net7.0-windows</TargetFramework> <SupportedOSPlatformVersion>10.0.17763.0</SupportedOSPlatformVersion>这样NuGet会正确识别包的兼容范围,避免因版本号格式差异导致的不兼容错误。
内容的提问来源于stack exchange,提问作者Kirsten
相关产品推荐
相关产品推荐

