|
<!-- ****************************************** --> |
|
<!-- Begin App.config Transform Settings --> |
|
<!-- VSなど、BuildTargetを渡さずビルドした時専用 --> |
|
<!-- ****************************************** --> |
|
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" /> |
|
<Target Name="AfterCompile" Condition="Exists('app.$(Configuration).config') And '$(BuildTarget)'==''"> |
|
<!--Generate transformed app config in the intermediate directory--> |
|
<TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" /> |
|
<!--Force build process to use the transformed configuration file from now on.--> |
|
<ItemGroup> |
|
<AppConfigWithTargetPath Remove="app.config" /> |
|
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config"> |
|
<TargetPath>$(TargetFileName).config</TargetPath> |
|
</AppConfigWithTargetPath> |
|
</ItemGroup> |
|
</Target> |
|
<!--Override After Publish to support ClickOnce AfterPublish. Target replaces the untransformed config file copied to the deployment directory with the transformed one.--> |
|
<Target Name="AfterPublish"> |
|
<PropertyGroup> |
|
<DeployedConfig>$(_DeploymentApplicationDir)$(TargetName)$(TargetExt).config$(_DeploymentFileMappingExtension)</DeployedConfig> |
|
</PropertyGroup> |
|
<!--Publish copies the untransformed App.config to deployment directory so overwrite it--> |
|
<Copy Condition="Exists('$(DeployedConfig)')" SourceFiles="$(IntermediateOutputPath)$(TargetFileName).config" DestinationFiles="$(DeployedConfig)" /> |
|
</Target> |
|
<!-- ****************************************** --> |
|
<!-- Begin App.config Custom Transform Settings --> |
|
<!-- MSBuild で /p:BuildTarget=Xxx を渡した時専用 --> |
|
<!-- ****************************************** --> |
|
<Target Name="AfterCompile" Condition="Exists('app.$(BuildTarget).config') And '$(BuildTarget)'!=''"> |
|
<!--Generate transformed app config in the intermediate directory--> |
|
<TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(BuildTarget).config" /> |
|
<!--Force build process to use the transformed configuration file from now on.--> |
|
<ItemGroup> |
|
<AppConfigWithTargetPath Remove="app.config" /> |
|
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config"> |
|
<TargetPath>$(TargetFileName).config</TargetPath> |
|
</AppConfigWithTargetPath> |
|
</ItemGroup> |
|
</Target> |
|
<!-- ここで↑で生成した $(IntermediateOutputPath) (つまりobj/$(Configuration)) にあるコピー元となる -sc.App.Config を差し替え--> |
|
<!-- -sc.App.Config が元となって、bin/$(Configuration) の exe.config が差し変わる --> |
|
<!-- -sc.App.Config が .exe.config より新しいかも判定して MSBuild はコピーしてるので、両方差し替えるの雑だけど安定 --> |
|
<Target Name="AfterBuild" Condition="Exists('app.$(BuildTarget).config') And '$(BuildTarget)'!=''"> |
|
<Delete Files="$(IntermediateOutputPath)$(ProjectFileName)-sc.App.config" /> |
|
<Copy SourceFiles="$(IntermediateOutputPath)$(TargetFileName).config" |
|
DestinationFiles="$(OutDir)$(TargetFileName).config" /> |
|
<Copy SourceFiles="$(IntermediateOutputPath)$(TargetFileName).config" |
|
DestinationFiles="$(IntermediateOutputPath)$(ProjectFileName)-sc.App.config" /> |
|
</Target> |
|
<!-- ****************************************** --> |
|
<!-- End App.config Custom Transform Settings --> |
|
<!-- ****************************************** --> |