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

.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文件夹等操作均无效。

可能原因
  1. 项目文件(.csproj)中App.config的处理规则被篡改,导致Visual Studio未将原配置合并到输出文件。
  2. App.config存在XML语法错误(如未闭合标签、节点格式错误),构建时无法解析,仅生成必要的绑定重定向。
  3. 第三方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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:22:11