私はいくつかの解決策を試しましたが、ここで私が個人的に見つけた最も簡単な方法を紹介します。
Danはコメントの中で、元の投稿はOleg Sychのものであると指摘しました— ありがとう、Oleg!
手順は次のとおりです。
1.各構成のXMLファイルをプロジェクトに追加します。
通常Debug
、とのRelease
構成があるので、ファイルApp.Debug.config
とに名前を付けますApp.Release.config
。私のプロジェクトでは、環境の種類ごとに構成を作成したので、それを試すことができます。
2.プロジェクトをアンロードし、編集するために.csprojファイルを開きます
Visual Studioでは、エディターで.csprojファイルを編集できます。最初にプロジェクトをアンロードするだけです。次に、それを右クリックし、[ <ProjectName> .csprojの編集 ]を選択します。
3. App。*。configファイルをメインApp.configにバインドします
すべてApp.config
とApp.*.config
参照を含むプロジェクトファイルセクションを見つけます。ビルドアクションが次のように設定されていることがわかりますNone
。
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
まず、すべてのビルドアクションをに設定しContent
ます。
次に、すべての構成固有のファイルをメインに依存App.config
するようにして、Visual Studioがデザイナーや分離コードファイルのようにそれらをグループ化するようにします。
上記のXMLを以下のXMLで置き換えます。
<Content Include="App.config" />
<Content Include="App.Debug.config" >
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="App.Release.config" >
<DependentUpon>App.config</DependentUpon>
</Content>
4.変換マジックをアクティブにする(VS2017より前のVisual Studioバージョンでのみ必要)
ファイルの終わりに
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
そして決勝前
</Project>
次のXMLを挿入します。
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="CoreCompile" 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>
これで、プロジェクトをリロードしてビルドし、App.config
変換を楽しむことができます!
ご参考までに
App.*.config
ファイルが次のように正しく設定されていることを確認してください:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--magic transformations here-->
</configuration>