为什么发布.NET 5 API项目时App.config自定义配置会丢失?
问题根因
- .NET 5(.NET Core系列版本)的默认MSBuild生成、发布流程内置了App.config兼容转换逻辑:为了兼容.NET Framework类库的运行要求,会自动重写App.config文件,插入runtime、startup等节点,你原文件中的自定义内容、注释都会被覆盖,和你设置的「始终复制」属性不冲突,因为这个转换逻辑是在文件复制到输出目录前执行的。
可用解决方案
方案1:禁用默认配置转换逻辑(推荐)
直接修改项目的.csproj文件,在顶层<PropertyGroup>节点中加入以下2条配置即可:
<PropertyGroup> <!-- 其他原有配置 --> <GenerateSupportedRuntime>false</GenerateSupportedRuntime> <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects> </PropertyGroup>
保存后重新发布,App.config就不会被自动改写,会保留你原有的全部内容。
方案2:绕开自动转换逻辑
如果你不想修改项目生成配置,可以用重命名+后期生成事件的方式实现:
- 将你原有的
App.config重命名为App.Raw.config,属性依然设置为「始终复制」 - 打开项目属性-「生成事件」面板,在「后期生成事件命令行」中加入以下命令:
copy /Y "$(ProjectDir)App.Raw.config" "$(TargetDir)App.config"
这个命令会在生成、发布的最后一步,用你保留的原始配置覆盖系统自动生成的App.config。
内容的提问来源于stack exchange,提问作者SamIAm
相关产品推荐
相关产品推荐

