VS Setup项目目标app.config在..obj \ x86 \ Release中

时间:2011-10-25 21:17:06

标签: visual-studio-2010 c#-4.0 app-config setup-project slowcheetah

我使用Dan Abramov的解决方案here为我的WinForms项目创建了一个app.config转换。效果很好,配置文件被转换并出现在正确的obj文件夹中。

当我查看我的应用程序的主输出的输出时,它从项目目录中获取app.config而不是像其他所有其他对应的obj文件夹...在我看来,这是一个很大的疏忽MSFT。显然,他们没有考虑所有配置文件类型的转换。

现在,如何根据构建配置从主项目的主输出中输出obj文件夹中的配置文件?

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用SlowCheetah(VS扩展程序),它可以像使用web.config一样转换app.config。此外,还支持为安装项目转换app.config的方案。

答案 1 :(得分:-1)

我发现我的工作正在寻找here。滚动到底部,查看kakoskin的答案。结合Dan Abramov's solution,我能够得到我想要的结果。这是我使用的MSBuild代码:

  <Target Name="AfterBuild" Condition="exists('app.$(Configuration).config')">
<TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
<!-- Force build process to use the transformed configuration file from now on. -->
<ItemGroup>
  <AppConfigWithTargetPath Remove="app.config" />
  <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
    <TargetPath>$(TargetFileName).config</TargetPath>
  </AppConfigWithTargetPath>
</ItemGroup>
<TransformXml Source="App.config" Transform="app.$(Configuration).config" Destination="App.Transformed.config" />

<ItemGroup>部分将从相应的obj \文件夹中删除app.config文件,并将其替换为转换后的配置文件,这不是必需的,但我还是将其留在那里。

希望这也可以帮助其他人!