【问题标题】:Error "NU1101: Unable to find package xyz" with dotnet publish .NET 5 and win-x64使用 dotnet publish .NET 5 和 win-x64 时出现错误“NU1101:无法找到包 xyz”
【发布时间】:2021-03-07 12:06:17
【问题描述】:

我正在尝试将最简单的 WinForms 应用程序发布为单个文件,它只是一个显示 MessageBox 的按钮,面向 Windows 和 .NET 5。

我已经安装了 .NET SDK 5.0.102,然后是安装了 5.0.103 的 VS 16.8.5。

我之前在尝试发布应用程序时遇到了一些其他错误,通过谷歌搜索我得到了这一点。

现在 dotnet 发布失败并出现此错误:

path.csproj:错误 NU1101:找不到包包名。源(等)中不存在具有此 ID 的包。

三次,缺少这些包:

Microsoft.NETCore.App.Runtime.win-x64

Microsoft.WindowsDesktop.App.Runtime.win-x64

Microsoft.AspNetCore.App.Runtime.win-x64

这是一台离线计算机,所以我理解“问题”,尽管我不明白为什么 SDK 安装或 VS 没有同时将所有包转储到磁盘上的某个位置。

但是,如果我转到这些包的 NuGet 页面,它们的描述是:

“内部实现包不宜直接使用,请勿直接引用。”

这让我觉得必须有另一种方法来正确解决这个问题。

我该怎么办?

谢谢!

更新/编辑以添加更多详细信息和 .csproj 文件:

这是一个干净的 Windows 7 Ultimate x64 安装,汇总到 2019-12(因为 2020-01 存在问题)。 没有防病毒软件或其他可能干扰的软件,我只安装了驱动程序、.NET SDK 5.0.102、.NET Framework 4.7.2 SDK,然后从布局(已验证)和 VS 安装了 Visual Studio 2019 16.8.5还“从 Visual Studio”安装了 .NET SDK 版本 5.0.103。

这就是我的工作:

打开 Visual Studio,使用模板“Windows Forms App (.NET)”创建一个新项目。我也尝试过保留其默认名称和位置,但我从不使用带有空格或非英文字母和数字的名称。

如果我只是从编辑器中启动应用程序,它会构建并运行良好。

然后我打开开发者命令提示符并运行:

dotnet publish -c Release -r win-x64 --self-contained true

我收到上述错误。与just相同:

dotnet 发布 -c 发布 -r win-x64

这是未改动的 .csproj 文件:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

如果我将目标框架更改为 .NET 5.0,则 .csproj 文件保持不变,但 TargetFramework 除外,它更改为“net5.0-windows”。然后我收到警告 NETSDK1137(不再需要使用 Microsoft.NET.Sdk.WindowsDesktop SDK。考虑将根项目元素的 Sdk 属性更改为“Microsoft.NET.Sdk”。),但我是否更改与否,发布时的错误和以前一样。

我还尝试将 .csproj 文件更改为此页面中的文件: https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file

(完全按原样尝试,或者只是添加一些缺少的属性,如果有的话,我会得到其他错误。)

如果我尝试使用其他方式发布而不是使用命令行,我仍然会收到错误。

【问题讨论】:

  • 您的csproj 文件似乎有问题,或者您添加了错误的SDK
  • 您可能需要更新版本的 VS。请参阅:stackoverflow.com/questions/46087918/…
  • 请与我们分享您的 csproj 文件,vad842,上面有一些错误。
  • 嗨 vad842,有什么更新吗?
  • 谢谢大家的回复! @PerryQian-MSFT 抱歉回复晚了,我已经更新了 OP 以包含 .csproj 文件和更多详细信息。

标签: c# .net visual-studio msbuild nuget


【解决方案1】:

我认为您的 csproj 文件下有一些错误的 PackageReference 节点。

我认为你在你的 csproj 文件中添加了这样的内容:

<ItemGroup>
        <PackageReference Include="Microsoft.NETCore.App.Runtime.win-x64" Version="5.0.3"></PackageReference>
        <PackageReference Include="Microsoft.WindowsDesktop.App.Runtime.win-x64" Version="5.0.3"></PackageReference>
        <PackageReference Include="Microsoft.AspNetCore.App.Runtime.win-x64" Version="5.0.3"></PackageReference>
</ItemGroup>

如果是这样,您应该注意这些是Net5.0 的内部实现运行时包,它们不是由 nuget 安装的。

并且它们仍然包含在Net Core 5.0 Sdk 下。如果您将 Platfrom 更改为 x64,它已经启用了这些运行时包。

所以请删除这些 xml 节点,然后重新发布您的 winform 项目。

另外,如果问题仍然存在,请将您的 csproj 文件分享给我们,我们可以更快速地解决问题。

【讨论】:

  • 感谢您,抱歉回复晚了。我在 .csproj 文件中没有这些行。我还尝试将 x64 平台添加到项目中(默认情况下它只有“Any CPU”)并且没有任何改变。
  • 尝试修复vs或者更新vs到最新版本。
猜你喜欢
  • 2019-01-10
  • 1970-01-01
  • 2018-04-05
  • 2021-11-05
  • 2022-01-05
  • 1970-01-01
  • 2018-12-14
  • 2021-06-19
  • 1970-01-01
相关资源
最近更新 更多