msbuild使用不同的app.config发布

时间:2011-07-28 11:06:34

标签: msbuild msbuild-task

我正在编写一个msbuild脚本来发布一个解决方案,这很好,但是我想根据选择的配置使用不同的app.config。

目前我的构建脚本如下:

<PropertyGroup>
    <ProjectFile>.\BarcodeScannerApp\BarcodeScannerApp.csproj</ProjectFile>
    <SolutionFile>.\BarcodeScannerApp.sln</SolutionFile>        
    <PublishLoc>http://publishlocation.com</PublishLoc>
    <Configuration>release</Configuration>
    <GenerateManifests>false</GenerateManifests>
    <BootstrapperEnabled>true</BootstrapperEnabled>
    <ApplicationVersion>1.0.0.*</ApplicationVersion>
    <UpdateEnabled>true</UpdateEnabled>
    <UpdateMode>Foreground</UpdateMode>
    <UpdateUrl>http://backoffice-dev/</UpdateUrl>
</PropertyGroup>

<Target Name="PublishApp">      

    <MSBuild Projects="$(SolutionFile)" 
             Targets="Publish"               
             Properties="PublishUrl=$(PublishLoc);
             Configuration=$(Configuration);
             GenerateManifests=$(GenerateManifests);
             BootstrapperEnabled=$(BootstrapperEnabled);
             ApplicationVersion=$(ApplicationVersion);
             UpdateEnabled=$(UpdateEnabled);
             UpdateMode=$(UpdateMode);
             UpdateUrl=$(UpdateUrl)"
    />

</Target>

目前运行此脚本时,它会生成一个文件BarcodeScannerApp.exe.config,它是我在解决方案中的app.config的副本。我想使用不同的配置文件,具体取决于我设置的不同配置(调试/发布)。

1 个答案:

答案 0 :(得分:1)

首先,您需要为所有配置文件定义引用app.config路径的属性,例如:

<DebugConfig>...</DebugConfig>
<ReleaseConfig>...</ReleaseConfig>
<TargetConfigPath>...</TargetConfigPath>

然后使用WHEN选择一个合适的并重写到目标目录

<When Condition="'$(Configuration)'=='DEBUG'">
     ...
</When>

<When Condition="'$(Configuration)'=='RELEASE'">
     ...
</When>

您可以在执行PublishApp target之前重写文件,引入新目标并创建目标依赖项。