NU1202:软件包与 net50-windows 不兼容

Rye*_*ead 3 .net visual-studio nuget

我有一个引用用户控件库的 .NET 5 WPF 应用程序 (x64)。当我直接引用库时,一切正常。

但是,当我创建 Nuget 包,然后在构建服务器上构建引用 Nuget 包的应用程序时,我得到:

NU1202:MyControls 包与 net50-windows (.NETFramework、Version=v5.0、Profile=windows)/win-x64 不兼容。

MyControls 包支持:

  • net50-windows7.0(.NETFramework,版本=v5.0,配置文件=windows7.0)
  • netcoreapp3.1(.NETCoreApp,版本=v3.1)

MyControls .csproj 文件包含以下内容:

  <PropertyGroup>
    <TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks>
    <UseWPF>true</UseWPF>
    <RuntimeIdentifiers>win;win-x64</RuntimeIdentifiers>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

应用程序 .csproj 文件包含以下内容:

 <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>
    <RuntimeIdentifiers>win-x64</RuntimeIdentifiers>
   
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它会输出 Windows 7 的包。我发现这个链接描述了它: https: //github.com/dotnet/sdk/issues/14553 那里的评论之一似乎与我的情况相符:

我也遇到了同样的现象,当我尝试在 .NET 5 应用程序中安装这些包时,它告诉我“net5.0”和“net.5.0-windows7.0”不兼容。不过,我所有的项目实际上都是“net5.0-windows”。

如果我手动将 net5.0-windows7.0 文件夹复制到 .nuget/packages 下的新文件夹 net5.0-windows,Nuget 错误就会消失。

但我得到了这个编译错误:

错误CS0103:名称“Windows”在当前上下文中不存在

我应该更改什么才能使 Nuget 恢复正常工作?

Mr *_*ian 6

我已经使用这两个 csproj 文件测试了您的问题,并且没有遇到相同的行为。

所以请尝试以下步骤:

  • 首先卸载MyControls应用程序项目上的 nuget 包。

  • 然后,清理 nuget 缓存或删除下面的所有文件C:\Users\xxx\.nuget\packages

  • 删除应用程序项目的文件夹binobj

  • 再次重新安装MyControlsnuget包来测试它。