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

Docker运行.NET Core应用仅Release模式报appsettings.json找不到错误如何解决

根因说明

  • Release模式下.NET 默认启用的发布优化导致Assembly.GetEntryAssembly().Location失效:当Release配置开启单文件发布(<PublishSingleFile>true</PublishSingleFile>)、程序集裁剪等优化时,Assembly.Location会返回空字符串,如果你的代码里有路径空值兜底逻辑,会自动回退到进程默认工作目录/usr/share/dotnet/,和未修改前的旧代码效果一致,所以报同样的路径错误。
  • VS自动生成的Dockerfile针对Release阶段默认添加了单文件发布、ReadyToRun编译等优化参数,和Debug阶段的构建逻辑完全不同,所以Debug模式正常、Release模式报错。
  • 若未在Dockerfile中显式设置WORKDIR /app,也会导致进程默认工作目录指向dotnet安装目录,放大路径获取错误的影响。

修复方案

优先推荐使用兼容性更强的根目录获取方式,适配所有构建模式和部署环境:

string baseDirectory = AppContext.BaseDirectory;

如果要保留原Assembly相关的写法,需要修改项目发布配置,在.csproj文件中添加如下配置关闭Release模式的单文件发布优化:

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
  <PublishSingleFile>false</PublishSingleFile>
  <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
</PropertyGroup>

同时检查Dockerfile的Release构建阶段,确认没有额外添加-p:PublishSingleFile=true之类的发布参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:36:02