我使用 Visual Studio 2022 创建了一个简单的 Hello World 应用程序。该应用程序是一个针对 .NET 6.0 框架的 WPF 应用程序。没有代码,只有一个“Hello World”TextBlock MainWindow.xaml
。当我尝试在 Windows 10 计算机上运行二进制文件时,我收到以下消息框:
要运行此应用程序,您必须安装 .NET Desktop Runtime 6.0.4 (x64)。您要立即下载吗?
当我运行该dotnet --info
命令时,它显示以下内容:
主机(对支持有用):版本:6.0.4 提交:be98e88c76
已安装的 .NET SDK:未找到 SDK。
安装的.NET 运行时:Microsoft.NETCore.App 6.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]要安装其他 .NET 运行时或 SDK:
https://aka.ms/dotnet-download
此时我觉得我已经拥有了我需要的一切,但我无法运行该应用程序。
我已经从下载了 .NET Desktop Runtime 6.0.4此下载页面。安装没有任何问题。
我测试过的多台机器上都发生过这种情况,包括:
- Hyper-V 中的 Windows 10“MSIX 打包工具环境”映像
- Hyper-V 中的 Windows 11“开发环境”映像
- 两台 Windows 10 开发机器。
重现问题
- 使用 Visual Studio 创建一个针对 .NET 6.0 的新 WPF 应用程序。
- 构建应用程序。
- 将 EXE 和 DLL 复制
bin/Debug/net6.0-windows
到另一台机器。 - 在另一台机器上运行 EXE。
答案1
不要将可执行文件从调试文件夹中复制出来,而是使用发布功能并选择“自包含”选项。
答案2
构建过程生成:
assembly_name.deps
assembly_name.pdb
assembly_name.runtimeconfig.json
我能够通过包含该runtimeconfig.json
文件来启动该应用程序。
使用 .NET Framework 应用程序,可以简单地复制 EXE 和 DLL,但对于 .NET Core 应用程序来说这似乎是不可能的。
对我来说,更好的方法是使用发布来生成单文件 EXE其中包含应用程序所需的一切。但它生成的文件相当大,大约是我以前发布的版本的两倍。