2011-07-28 96 views
0

我目前正在編寫一個msbuild腳本來發布解決方案,這是很好,但我想使用不同的app.config取決於選擇什麼配置。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

正如你首先需要定義像所有配置文件引用了app.config路徑屬性:

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

,然後使用WHEN選擇一個適當的和重寫到目標目錄

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

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

通過引入新目標並創建目標依賴關係,您可以在執行PublishApp目標之前重寫文件。

+0

你是否建議我編輯app.config?取決於配置設置?即1)檢查配置(調試或發佈)2)用新變量編輯app.config? 3)運行發佈任務? – Mike

+0

不能編輯,將右邊的一個複製到輸出文件夾,這樣PublishApp任務就會提取剛剛複製的文件。所以你只需從debugConfig.config或releaseCOnfig.config複製到/rightpath/app.config即可 – sll