You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 5 AspNet Core应用发布后runtimeconfig.json含includedFrameworks而非frameworks的原因及解决方法

嗨,这个问题其实和.NET的两种部署模式直接相关,我来给你拆解清楚~

为什么生成的是includedFrameworks而非frameworks

这俩字段的差异完全取决于你用的部署方式:

  • 你现在执行的dotnet publish -c release是默认的框架依赖部署(FDD)。这种模式下,你的应用会依赖目标机器上已经安装好的.NET运行时,所以runtimeconfig.json里用includedFrameworks来声明需要的框架版本,告诉系统要去加载机器上已有的对应框架。
  • 而你期望的frameworks字段,是**独立部署(SCD)**的专属标识。这种模式下,发布包会把完整的.NET运行时一起打包进去,不需要目标机器预先安装运行时,所以用frameworks来定义打包在包里的运行时信息。

如何生成包含frameworks字段的文件

要得到你想要的runtimeconfig.json,只需要切换到独立部署模式发布就行,有两种简单的方式:

方式1:在发布命令里加参数

直接在原有命令基础上,加上--self-contained true和目标运行环境的RID(Runtime Identifier),比如你要部署到Windows x64机器,就用:

dotnet publish -c release MyApplication.csproj --self-contained true -r win-x64

需要替换win-x64的话,常用RID还有linux-x64(Linux x64)、osx-x64(Mac x64)等,根据你的部署环境选就行。

方式2:修改项目文件默认配置

如果想让项目默认用独立部署,可以打开你的MyApplication.csproj,添加以下配置:

<PropertyGroup>
  <SelfContained>true</SelfContained>
  <RuntimeIdentifier>win-x64</RuntimeIdentifier> <!-- 换成你的目标RID -->
</PropertyGroup>

之后再执行原来的dotnet publish -c release MyApplication.csproj命令,生成的runtimeconfig.json就会包含frameworks字段啦。

⚠️ 提醒一下:独立部署的发布包体积会比框架依赖部署大不少,因为包含了完整的.NET运行时,你可以根据自己的部署场景来权衡选用哪种模式。

内容的提问来源于stack exchange,提问作者JakobFerdinand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 16:02:39