打包为NuGet包的C# WPF应用无法安装:.NET运行时检测异常求助
排查Squirrel.Windows部署时的.NET Runtime误报问题
具体排查步骤
- 确认运行时的真实安装情况
打开CMD执行dotnet --list-runtimes,检查输出是否包含Microsoft.WindowsDesktop.App 6.0.9 [x64对应的安装路径]。如果仅存在x86版本,x64应用会触发检测失败。 - 核对csproj打包配置
检查项目文件中的关键配置:- 确保
<RuntimeIdentifier>明确设置为win-x64,不要留空或设为win-x86 - 确认
<SelfContained>的取值:若为false,依赖全局运行时;若为true,需保证打包时已包含完整的x64运行时文件 - 检查
<SquirrelWindowsPackageVersion>与运行时版本是否匹配,避免版本兼容问题
- 确保
- 验证安装包的注册表检测逻辑
解压生成的NuGet包,查看Setup相关的检测配置,确认它读取的是x64运行时的注册表项:- 对应注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.WindowsDesktop.App,需存在6.0.9的子项 - 如果安装包是32位,会读取
WOW6432Node下的路径,这会导致x64运行时无法被检测到
- 对应注册表路径:
- 直接测试应用的运行兼容性
将编译好的应用主程序直接放到已安装的.NET 6.0.9 x64运行时目录下启动,验证应用本身是否能正常运行,排除应用自身的依赖问题 - 清理缓存后重新打包
删除项目的obj、bin文件夹,以及Squirrel生成的Releases目录,重新执行打包命令,避免旧缓存的配置冲突导致异常
内容的提问来源于stack exchange,提问作者BartBB
相关产品推荐
相关产品推荐

