Saya mencoba beberapa solusi dan ini adalah yang paling sederhana yang saya temukan secara pribadi.
Dan menunjukkan dalam komentar itu posting asli milik Oleg Sych - terima kasih, Oleg!
Berikut instruksinya:
1. Tambahkan file XML untuk setiap konfigurasi ke proyek.
Biasanya Anda akan memiliki Debug
dan Release
konfigurasi sehingga nama file Anda App.Debug.config
dan App.Release.config
. Dalam proyek saya, saya membuat konfigurasi untuk setiap jenis lingkungan, jadi Anda mungkin ingin bereksperimen dengan itu.
2. Bongkar proyek dan buka file .csproj untuk diedit
Visual Studio memungkinkan Anda untuk mengedit file .csproj langsung di editor — Anda hanya perlu membongkar proyek terlebih dahulu. Kemudian klik kanan padanya dan pilih Edit <ProjectName> .csproj .
3. Bind App. *. Config file ke App.config utama
Temukan bagian file proyek yang berisi semua App.config
dan App.*.config
referensi. Anda akan melihat aksi build mereka diatur ke None
:
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
Pertama, atur aksi build untuk mereka semua Content
.
Selanjutnya, buat semua file konfigurasi khusus bergantung pada mainApp.config
sehingga Visual Studio mengelompokkannya seperti halnya desainer dan file di belakang kode.
Ganti XML di atas dengan yang di bawah ini:
<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. Aktifkan sihir transformasi (hanya diperlukan untuk versi Visual Studio pra VS2017 )
Di akhir file setelah
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
dan sebelum final
</Project>
masukkan XML berikut:
<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>
Sekarang Anda dapat memuat ulang proyek, membangunnya dan menikmati App.config
transformasi!
FYI
Pastikan App.*.config
file Anda memiliki pengaturan yang benar seperti ini:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--magic transformations here-->
</configuration>