发布引用.NET Standard 2.0类库的.NET6 WPF项目遇NETSDK1005错误
问题原因与解决办法
为什么会报错?
你执行dotnet publish WpfAfpp1.sln --framework net6.0-windows发布整个解决方案时,--framework参数是全局作用于所有项目的。dotnet会尝试为方案里的每个项目匹配net6.0-windows这个目标框架,但你的类库只设置了.NET Standard 2.0目标,没有net6.0-windows,所以restore生成的project.assets.json里没有该框架的相关配置,因此抛出NETSDK1005错误。
需要明确的是:.NET 6确实完全支持引用.NET Standard 2.0类库,问题出在发布命令的参数范围,而非框架兼容性本身。
解决办法(满足你保留类库.NET Standard 2.0目标的需求)
直接发布WPF项目而非整个解决方案:
既然核心需求是发布WPF项目,且它已引用.NET Standard 2.0类库,直接单独发布WPF项目即可,命令修改为:dotnet publish WpfApp1/WpfApp1.csproj --framework net6.0-windows这样dotnet仅处理WPF项目,它会自动识别并包含兼容的.NET Standard 2.0类库,不会强制要求类库拥有
net6.0-windows目标。若必须发布整个解决方案:
可以在类库的.csproj文件中添加多目标框架(保留.NET Standard 2.0作为主目标),但这不符合你“仅保留.NET Standard 2.0目标”的要求,因此更推荐第一个办法。
内容的提问来源于stack exchange,提问作者Balle
相关产品推荐
相关产品推荐

