已安装SDK时CentOS上dotnet core 3.1运行时缺失报错如何解决
问题解决:CentOS 7下dotnet 3.1控制台应用提示找不到3.1.0版本Microsoft.NETCore.App框架
根因说明
你的控制台应用在编译时默认绑定了精确的3.1.0版本Microsoft.NETCore.App运行时,而你服务器上安装的是更高的3.1.17补丁版本,默认运行时回滚策略未启用导致无法识别兼容的更高补丁版本。
解决方案
方案1:修改应用配置(推荐,无需调整服务器环境)
- 方法1:发布时启用自包含打包,将对应版本运行时一起打包到发布包中,执行发布命令:
dotnet publish -c Release -r centos.7-x64 --self-contained true
发布后直接用生成的可执行文件启动即可,不需要依赖服务器的dotnet运行时。 - 方法2:在项目配置中开启运行时补丁版本向前兼容
打开项目的.csproj文件,在<PropertyGroup>节点下添加如下配置:
保存后重新编译发布应用即可,应用会自动适配服务器上安装的最高3.1.x版本运行时。<RollForward>LatestPatch</RollForward>
方案2:服务器端调整运行时策略(无需重新编译应用)
- 临时生效:启动应用前在当前终端执行命令设置环境变量:
export DOTNET_ROLL_FORWARD=LatestPatch
再正常启动应用即可。 - 永久生效:将上面的环境变量配置写入
/etc/profile(全局生效)或对应用户的~/.bashrc文件,写入后执行source /etc/profile(或对应配置文件)让配置生效,后续启动应用都会自动适配兼容的补丁版本。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

