我已经为dev和prod创建了一个具有特定app.config的控制台应用程序(blah.exe)。这些名为dev_app.config
和prod_app.config
。我在我的csproj文件 * 中连接了一个AfterBuild
目标,它将正确的配置文件复制到bin目录blah.exe.config
。
我还为这个控制台应用程序创建了一个安装项目,但我遇到了一个小问题。似乎安装项目使用项目目录中的实际app.config
而不是最终的blah.exe.config
(位于bin目录中)。
|--Bin
| |--Debug
| |--Blah.exe.config <--- I want the setup project to use this file
|--app.config <--- Setup project uses this file at the moment
|--dev_app.config
|--prod_app.config
如何强制设置项目使用bin文件夹中生成的最终配置文件,而不是实际的app.config
文件?
其他信息:
我当前的解决方案涉及添加另一个AfterBuild
命令,该命令会覆盖实际的app.config
文件。我不喜欢接近,因为它迫使我有一个我不需要的额外文件。此外,由于我对构建时被覆盖的app.config
文件进行了更改,因此拥有此文件已经让我感到悲痛。问题是如何让安装项目使用bin文件夹中的最终配置文件和 NOT 如何管理配置或创建配置文件的方法。
答案 0 :(得分:3)
我一直在使用完全相同的场景但是我使用的是BeforeBuild而不是AfterBuild,而且它一直很好。我一直在网络和Windows项目上这样做。以下是我正在使用的代码。
<Target Name="BeforeBuild">
<ItemGroup>
<ConfigSourceFiles Include="Web.$(Configuration).config" />
<ConfigDestinationFiles Include="Web.config" />
</ItemGroup>
<Copy SourceFiles="@(ConfigSourceFiles)" DestinationFiles="@(ConfigDestinationFiles)" />
</Target>
希望这有帮助。