[Bug] v3.4.2 Win GUI 缺失 runtimeconfig.json,启动时误提示需安装 .NET Desktop Runtime
问题
v3.4.2 的 Windows GUI 压缩包(imewlconverter_win-x64.zip)解压后 gui/ 目录下的 深蓝词库转换.exe 双击无法启动,弹窗提示需要安装 .NET Desktop Runtime;但系统已安装 Microsoft.WindowsDesktop.App 10.0.10。
根因
gui/ 目录里漏放了 GUI exe 自己的 runtimeconfig,只塞进了 CLI 的那份,文件名对不上:
gui/
├── 深蓝词库转换.exe ← framework-dependent,5.5 MB
├── ImeWlConverterCmd.runtimeconfig.json ← 这是 CLI 的 config,主名对不上 GUI exe
├── ImeWlConverter.Abstractions.pdb
├── ImeWlConverter.Core.pdb
├── ImeWlConverter.Formats.pdb
└── Readme.txt
.NET apphost 启动时按「exe 主名 + .runtimeconfig.json」查找配置文件。深蓝词库转换.exe 找不到 深蓝词库转换.runtimeconfig.json,host 就 fallback 到"请安装对应 runtime"的提示——跟系统里装没装 runtime 无关,纯属配置缺失。
另外:exe 内嵌字符串确认依赖 Microsoft.WindowsDesktop.App(WPF/WinForms)+ net10,所以直接复制 CLI 那份 config 还不行——CLI 用的是 Microsoft.NETCore.App,framework 名必须改成 Microsoft.WindowsDesktop.App。
复现
- 安装 .NET Desktop Runtime 10.0.10(x64)
- 解压
imewlconverter_win-x64.zip
- 双击
gui\深蓝词库转换.exe
- 弹窗:"请安装 .NET Desktop Runtime"
期望
GUI 双击即可启动。
临时绕过(已验证可用)
在 gui/ 目录下手动新建 深蓝词库转换.runtimeconfig.json:
{
"runtimeOptions": {
"tfm": "net10.0",
"framework": {
"name": "Microsoft.WindowsDesktop.App",
"version": "10.0.0"
},
"configProperties": {
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
加上后 GUI 立即可启动。
修复建议
排查打包脚本(GitHub Actions workflow / csproj PublishDir),确保 GUI 发布目录里两个文件都进去:
<GUIExeName>.runtimeconfig.json(framework = Microsoft.WindowsDesktop.App)
ImeWlConverterCmd.runtimeconfig.json(framework = Microsoft.NETCore.App,CLI 用)
很可能是 publish 时把 GUI 的 runtimeconfig 覆盖/漏拷了。
环境
- 版本:v3.4.2(
imewlconverter_win-x64.zip)
- 系统:Windows 10/11 x64
- 已装 runtime:
Microsoft.WindowsDesktop.App 10.0.10、Microsoft.NETCore.App 10.0.10
[Bug] v3.4.2 Win GUI 缺失 runtimeconfig.json,启动时误提示需安装 .NET Desktop Runtime
问题
v3.4.2 的 Windows GUI 压缩包(
imewlconverter_win-x64.zip)解压后gui/目录下的深蓝词库转换.exe双击无法启动,弹窗提示需要安装 .NET Desktop Runtime;但系统已安装Microsoft.WindowsDesktop.App 10.0.10。根因
gui/目录里漏放了 GUI exe 自己的 runtimeconfig,只塞进了 CLI 的那份,文件名对不上:.NET apphost 启动时按「exe 主名 +
.runtimeconfig.json」查找配置文件。深蓝词库转换.exe找不到深蓝词库转换.runtimeconfig.json,host 就 fallback 到"请安装对应 runtime"的提示——跟系统里装没装 runtime 无关,纯属配置缺失。另外:exe 内嵌字符串确认依赖
Microsoft.WindowsDesktop.App(WPF/WinForms)+net10,所以直接复制 CLI 那份 config 还不行——CLI 用的是Microsoft.NETCore.App,framework 名必须改成Microsoft.WindowsDesktop.App。复现
imewlconverter_win-x64.zipgui\深蓝词库转换.exe期望
GUI 双击即可启动。
临时绕过(已验证可用)
在
gui/目录下手动新建深蓝词库转换.runtimeconfig.json:{ "runtimeOptions": { "tfm": "net10.0", "framework": { "name": "Microsoft.WindowsDesktop.App", "version": "10.0.0" }, "configProperties": { "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false } } }加上后 GUI 立即可启动。
修复建议
排查打包脚本(GitHub Actions workflow / csproj PublishDir),确保 GUI 发布目录里两个文件都进去:
<GUIExeName>.runtimeconfig.json(framework =Microsoft.WindowsDesktop.App)ImeWlConverterCmd.runtimeconfig.json(framework =Microsoft.NETCore.App,CLI 用)很可能是 publish 时把 GUI 的 runtimeconfig 覆盖/漏拷了。
环境
imewlconverter_win-x64.zip)Microsoft.WindowsDesktop.App 10.0.10、Microsoft.NETCore.App 10.0.10