用途:WinForms 仓库面向 .NET 预览版构建,测试可执行文件和已生成程序集需要匹配的运行时版本,而该版本可能未在官方 .NET 下载页公开。本技能用于从内部 CI 源下载并安装所需精确版本。
确定所需版本:可从报错信息中读取(如 Microsoft.NETCore.App 版本 11.0.0-preview.4.26203.108 x64),更推荐读取测试可执行文件旁的 .runtimeconfig.json,解析 runtimeOptions.framework.version。
下载 URL 规则:将 {version} 替换为完整版本号,x64 用 https://ci.dot.net/public/Runtime/{version}/dotnet-runtime-{version}-win-x64.msi,x86 用 ...-win-x86.msi。
安装:用 PowerShell 的 Invoke-WebRequest 下载 MSI,再用 msiexec /i ... /quiet /norestart 安装;关键点是加 -Verb RunAs 触发 UAC 提权,否则 MSI 会静默失败并返回退出码 1603。验证可用 dotnet --list-runtimes 过滤版本号,或查看 shared\Microsoft.NETCore.App 目录。
自动化:脚本可从首个测试 runtimeconfig 自动检测版本、判断是否已安装、下载双架构并提权安装、最后验证清理。
替代方案:仓库本地 .dotnet 文件夹(由 .\Restore.cmd 填充)可能已含所需运行时,设置 DOTNET_ROOT 与 PATH 指向本地即可,但 vstest.console.exe 等外部工具可能无法识别。
限制与排错:下载 404 说明版本尚未发布到 CI 源;安装后仍报框架缺失需检查架构及框架名;若需要 Microsoft.WindowsDesktop.App,将 URL 中的 Runtime 替换为 WindowsDesktop。