.NET Framework 4.8 Windows Service项目App.config被自动绑定重定向覆盖求助
基于.NET Framework 4.8的C# Windows Service项目中,已添加包含appSettings、connectionStrings、entityFramework、system.net mailSettings等节点的App.config文件,但构建后生成的<assemblyname>.exe.config仅包含自动生成的程序集绑定重定向,原配置内容完全丢失。尝试修改App.config的Build Action和Copy to Output Directory属性、手动添加绑定重定向到源文件、清理.vs/obj/bin文件夹等操作均无效。
- 项目文件(.csproj)中App.config的处理规则被篡改,导致Visual Studio未将原配置合并到输出文件。
- App.config存在XML语法错误(如未闭合标签、节点格式错误),构建时无法解析,仅生成必要的绑定重定向。
- 第三方NuGet包或自定义MSBuild任务在构建阶段覆盖/清空了输出的配置文件。
检查并修正项目文件配置
用文本编辑器打开项目的.csproj文件,确认App.config的条目是否正确,确保包含复制规则:<ItemGroup> <None Include="App.config"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>同时检查是否存在自定义的MSBuild目标(如
AfterBuild、BeforeBuild),是否有删除或替换$(AssemblyName).exe.config的操作,若有则移除或修改。验证App.config的XML语法
用Visual Studio的XML编辑器打开App.config,检查是否存在语法错误:- 所有标签是否正确闭合
- 节点属性是否符合XML规范
entityFramework、mailSettings等节点的格式是否符合.NET配置要求
修复错误后重新构建项目。
强制复制App.config到输出目录
若上述方法无效,可在.csproj中添加自定义AfterBuild目标,强制将源App.config复制为输出的exe.config:<Target Name="AfterBuild"> <Copy SourceFiles="$(ProjectDir)App.config" DestinationFiles="$(OutputPath)$(AssemblyName).exe.config" OverwriteReadOnlyFiles="true" /> </Target>排查第三方NuGet包干扰
暂时卸载项目中的非必要NuGet包(尤其是涉及配置处理的工具类包),重新构建项目,确认是否是包导致的问题。若找到问题包,更新到最新版本或替换为替代方案。
内容的提问来源于stack exchange,提问作者East of Nowhere

