升级VS后构建服务器.NETCore.App Runtime pack版本不匹配问题
解决方案
升级Visual Studio通常会同步安装更高版本的.NET Core 3.1.x运行时与SDK,默认构建逻辑会优先使用最新的补丁版本运行时,以此覆盖安全漏洞与已知问题,3.1大版本内的补丁升级完全向后兼容,无特殊强制绑定旧版本的需求时,不建议锁版本,直接使用3.1.9是更安全的选择。
如果确实需要强制锁定到3.1.3版本,按以下步骤配置即可生效:
- 在项目.csproj文件的
<PropertyGroup>节点中,除了原有<RuntimeFrameworkVersion>3.1.3</RuntimeFrameworkVersion>配置外,新增<RollForward>Disable</RollForward>属性,关闭运行时版本自动向前滚动的默认逻辑。 - 如果你的项目采用自包含部署模式,还需要额外添加两个配置:
- 在
<PropertyGroup>节点新增<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>,禁用隐式的框架引用逻辑 - 在
<ItemGroup>节点手动指定对应版本的运行时包引用:
<PackageReference Include="Microsoft.NETCore.App.Runtime.win-x86" Version="3.1.3" /> - 在
- 配置完成后删除项目根目录下的bin、obj文件夹清除构建缓存,重新执行构建即可看到deps.json中的版本回退到3.1.3。
如果配置后仍然不生效,可以在项目根目录新增global.json文件,指定构建使用的SDK版本(SDK 3.1.201对应运行时版本为3.1.3):
{ "sdk": { "version": "3.1.201", "rollForward": "disable" } }
内容的提问来源于stack exchange,提问作者James Harcourt
相关产品推荐
相关产品推荐

