Dot-Net
如何根據建構配置有條件地部署 app.config?
我有三個自定義建構配置 { Dev、Qs、Prd }。所以,我有三個應用程序配置 { Dev.config、Qs.config、Prd.config }。我知道如何編輯 .csproj 文件以根據目前的建構配置輸出正確的文件。
<Target Name="AfterBuild"> <Delete Files="$(TargetDir)$(TargetFileName).config" /> <Copy SourceFiles="$(ProjectDir)$(Configuration).config" DestinationFiles="$(TargetDir)$(TargetFileName).config" /> </Target>我的問題是,我需要有六個建構配置 { Dev、Qs、Prd} x { Debug、Release }。我需要支持每個環境的調試和發佈設置(優化、pdb 等)。但是,應用程序配置值在調試/發布之間不會改變。
如何使建構腳本盡可能通用並僅使用三個應用程序配置?我不想硬編碼太多的條件字元串。
類似的東西
<PropertyGroup Condition="'$(Configuration)'=='Dev_Debug' OR '$(Configuration)'=='Dev_Release'" > <CfgFileName>Dev</CfgFileName> </PropertyGroup> <!-- similar for Qs & Prd --> <Target ...>...$(CfgFileName).config...
我們使用 csproj 文件中的選擇元素修復了這個問題。我們設置了幾種不同的配置,所以我們所做的就是將此塊放入您的 proj 文件中,您可以使用 VS 的配置來幫助您。我確實想支持 Rob 的建議以移動傳遞的 app.config。一段時間以來,我一直在朝著這個方向前進。
<Choose> <When Condition=" '$(Configuration)' == 'Debug' "> <ItemGroup> <None Include="App.config" /> <None Include="Release\App.config" /> </ItemGroup> </When> <Otherwise> <ItemGroup> <None Include="Release\App.config"> <Link>App.config</Link> </None> </ItemGroup> </Otherwise>