VS2019 16.9安装.NET Core 5.0后运行ASP.NET Core 3.1应用报错
问题核心原因
VS 2019 16.9版本的.NET Core项目加载逻辑,会自动优先匹配系统内安装的最高版本.NET Core SDK(即你新装的5.0 SDK)关联项目运行参数,哪怕项目目标框架为3.1,也会向IIS Express传入和3.1不兼容的运行时加载参数,最终触发进程异常退出,退出码-1。删除.vs文件夹仅能清理VS本地项目缓存,无法覆盖全局SDK匹配逻辑和IIS Express全局配置缓存,因此无法解决该问题。
分步操作方案
- 第一步:在解决方案根目录(存放.sln文件的文件夹)创建
global.json文件,强制锁定SDK使用版本,避免自动跳转5.0 SDK。文件内容参考如下:
{ "sdk": { "version": "本地安装的3.1SDK完整版本号", "rollForward": "major" } }
版本号获取方式:在命令提示符执行dotnet --list-sdks,从输出列表中找到本地安装的3.1系列SDK完整版本号(如3.1.327)填入对应位置。配置的作用是强制使用3.x主版本系列的SDK运行项目,只会在3.x的小版本、补丁版本中自动匹配最新可用版本,不会跨主版本加载5.0的SDK。注意:配置文件保存后,重启VS打开解决方案时,如果弹出SDK版本升级提示,直接选择忽略即可,避免VS自动修改全局SDK版本配置。
- 第二步:调整项目调试配置,规避VS 16.9与IIS Express的已知兼容性bug。
打开项目属性页,切换到调试标签页,取消「启用编辑并继续」选项的勾选;同时核对项目绑定的http/https端口,和之前正常运行的端口保持一致,不要使用VS自动分配的未在IIS Express端口白名单内的新端口。 - 第三步:清理IIS Express全局缓存配置。
打开系统资源管理器,定位到C:\Users\你的用户名\Documents\IISExpress\config路径,备份并删除该路径下的applicationhost.config文件,重启VS后让IIS Express重新生成干净的配置文件,清除和5.0 SDK关联的旧运行参数。 - 第四步:验证启动链路。
配置完成后,先选择“项目”启动模式(非IIS Express模式)运行一次应用,确认3.1目标框架的应用能正常加载运行,无SDK版本不匹配的报错,再切回IIS Express模式启动验证。
内容的提问来源于stack exchange,提问作者Yaduraj
相关产品推荐
相关产品推荐

