Web.config style Transform is very useful. Unfortunately, it’s only available for web project. Here’s how to make it available for non-web project.
1. Unload your project
2. Edit your project file
3. Edit your config entries – note the
2. Edit your project file
3. Edit your config entries – note the
DependentUpon
tag
1
2
3
4
5
6
7
8
9
10
11
12
| < ItemGroup > < Content Include = "app.config" /> < Content Include = "app.Debug.config" > < DependentUpon >app.config</ DependentUpon > </ Content > < Content Include = "app.Test.config" > < DependentUpon >app.config</ DependentUpon > </ Content > < Content Include = "app.Release.config" > < DependentUpon >app.config</ DependentUpon > </ Content > </ ItemGroup > |
4. Add transform task at the bottom of file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| < Project > ... < Import Project = "$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> < UsingTask TaskName = "TransformXml" AssemblyFile = "$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" /> < Target Name = "AfterCompile" Condition = "exists('app.$(Configuration).config')" > <!-- 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 > <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. <Target Name="BeforeBuild"> </Target> <Target Name="AfterBuild"> </Target> --> </ Project > |
5. Reload your project
No comments:
Post a Comment