2011-02-18 73 views
7

我已经为dev和prod创建了具有特定app.config的控制台应用程序(blah.exe)。这些被命名为dev_app.configprod_app.config。我在我的csproj文件*中连接了一个AfterBuild目标,它将正确的配置文件作为blah.exe.config复制到bin目录。如何在创建安装项目时使用最终的{project} .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

*Deploy an app.config based on build configuration

+0

您是否在使用DEBUG版本进行开发,然后发布用于生产?如果是这样,你可以看看使用#if DEBUG http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx,也许加载不同的配置文件基于使用http://msdn.microsoft .com/en-us/library/ms223161.aspx – 2011-02-18 05:31:22

+0

@astander,对于Debug,是`dev_app.config`,对于Release为`prod_app.config`。 – Ahmad 2011-02-18 05:33:51

回答

2

改编我一直在使用完全相同的情况,但是我用的是BeforeBuild代替AfterBuild的,并且它一直很好。我一直在web和windows项目上做这个。以下是我正在使用的代码。

<Target Name="BeforeBuild"> 
    <ItemGroup> 
     <ConfigSourceFiles Include="Web.$(Configuration).config" /> 
     <ConfigDestinationFiles Include="Web.config" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(ConfigSourceFiles)" DestinationFiles="@(ConfigDestinationFiles)" /> 
    </Target> 

希望这会有所帮助。

相关问题