如何通过程序可靠检测.NET 5 AspnetCore Hosting Bundle是否已安装
可行的Windows Hosting Bundle检测方法
以下是经过验证的无残留误判的检测方案:
方法1:检查AspNetCoreModuleV2核心文件是否存在
Windows Hosting Bundle的核心组件是IIS托管模块AspNetCoreModuleV2,卸载时会自动删除对应物理文件,不会有残留。
直接检查固定路径下的文件是否存在即可:Test-Path "C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll"
- 返回
True说明已安装对应版本的Hosting Bundle - 返回
False说明未安装
方法2:查询系统已安装程序列表
直接读取系统卸载注册表项匹配安装记录,速度快且无残留干扰,PowerShell命令如下:
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object DisplayName -Like "*Windows Hosting Bundle*" | Select-Object DisplayName, DisplayVersion, InstallDate
- 有返回结果时,输出内容会直接显示已安装的Hosting Bundle版本和安装时间
- 无返回结果说明未安装
方法3:验证IIS全局模块注册状态
如果需要确认IIS已正确加载对应模块,可以执行以下PowerShell命令:Get-WebGlobalModule -Name AspNetCoreModuleV2
- 返回正常的模块信息且
Image字段指向的文件路径真实存在,说明Hosting Bundle安装正常且IIS已注册对应模块 - 返回报错说明模块未注册,Hosting Bundle未正常安装
原方法失效原因说明
dotnet --list-runtimes和dotnet --list-sdks仅会输出系统中存在的.NET运行时/SDK列表,Windows Hosting Bundle自带的AspNetCore运行时和独立安装的.NET运行时没有区别,因此无法通过输出区分- 部分版本的Hosting Bundle卸载时不会清除注册表中遗留的AspnetCoreModuleV2项,因此单独查该注册表项会出现误判
内容的提问来源于stack exchange,提问作者Romain Lazaud
相关产品推荐
相关产品推荐

