【发布时间】: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