我正在编写一个msbuild脚本来发布一个解决方案,这很好,但是我想根据选择的配置使用不同的app.config。
我见过人们谈论转换,但这本身只适用于web.config(是的,你可以通过一点点黑客攻击app.config,但似乎不适用于发布任务的msbuild)
Creating msbuild script to build, publish with specified app.config, and update from different locations 我也看过这篇文章,但它实际上没有回答这个具体问题(阅读链接后)。
目前我的构建脚本如下:
<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的副本。我想使用不同的配置文件,具体取决于我设置的不同配置(调试/发布)。
答案 0 :(得分:1)
首先,您需要为所有配置文件定义引用app.config
路径的属性,例如:
<DebugConfig>...</DebugConfig>
<ReleaseConfig>...</ReleaseConfig>
<TargetConfigPath>...</TargetConfigPath>
然后使用WHEN
选择一个合适的并重写到目标目录
<When Condition="'$(Configuration)'=='DEBUG'">
...
</When>
<When Condition="'$(Configuration)'=='RELEASE'">
...
</When>
您可以在执行PublishApp
target之前重写文件,引入新目标并创建目标依赖项。