Gunakan plugin SlowCheetah . Untuk opsi dan detail selengkapnya tentang cara menggunakan SlowCheetah, teruslah membaca.
Seperti yang telah Anda perhatikan, tidak ada cara default dan mudah untuk menggunakan file konfigurasi yang berbeda untuk proyek tipe Library (.dll) . Alasannya adalah bahwa pemikiran saat ini adalah: "Anda tidak perlu"! Pengembang kerangka kerja menganggap Anda memerlukan konfigurasi untuk file yang dapat dieksekusi: baik itu konsol, desktop, web, aplikasi seluler, atau yang lainnya. Jika Anda mulai menyediakan konfigurasi untuk dll , Anda mungkin akan mendapatkan sesuatu yang saya sebut sebagai config hell . Anda mungkin tidak lagi memahami (dengan mudah) mengapa variabel ini dan itu memiliki nilai aneh yang muncul entah dari mana.
"Tunggu", - Anda mungkin berkata, "tetapi saya memerlukan ini untuk pengujian integrasi / unit saya, dan ini adalah perpustakaan!". Dan itu benar dan inilah yang dapat Anda lakukan (pilih hanya satu, jangan campur):
1. SlowCheetah - mengubah file konfigurasi saat ini
Anda dapat menginstal SlowCheetah - plug-in Visual Studio yang melakukan semua poking XML (atau transformasi) tingkat rendah untuk Anda. Cara kerjanya, secara singkat:
- Instal SlowCheetah dan mulai ulang Visual Studio (Visual Studio> Tools> Extensions and Updates ...> Online> Visual Studio Gallery> cari "Slow Cheetah")
- Tentukan konfigurasi solusi Anda ( Debug dan Rilis ada secara default), Anda dapat menambahkan lebih banyak (klik kanan pada solusi di Solution Explorer > Pengelola Konfigurasi ... > Konfigurasi Solusi Aktif > Baru ...
- Tambahkan file konfigurasi jika perlu
- Klik kanan pada file config> Add Transform
- Ini akan membuat file Transformation - satu per konfigurasi Anda
- File transformasi berfungsi sebagai injektor / mutator, mereka menemukan kode XML yang diperlukan dalam file konfigurasi asli dan memasukkan baris baru atau mengubah nilai yang diperlukan, apa pun yang Anda perintahkan.
2. Bermain-main dengan file .proj - salin-ganti nama file konfigurasi baru
Aslinya diambil dari sini . Ini adalah tugas MSBuild kustom yang dapat Anda sematkan ke dalam file Visual Studio .proj . Salin dan tempel kode berikut ke dalam file proyek
<Target Name="AfterBuild">
<Delete Files="$(TargetDir)$(TargetFileName).config" />
<Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config"
DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
Sekarang buat folder dalam proyek yang disebut Config
dan tambahkan file baru di sana: App.Debug.config , App.Release.config dan seterusnya. Sekarang, tergantung pada konfigurasi Anda, Visual Studio akan mengambil file konfigurasi dari Config
folder, dan menyalin-ganti namanya ke direktori output. Jadi jika Anda memiliki proyek PatternPA.Test.Integration dan konfigurasi Debug yang dipilih, di folder keluaran setelah pembuatan Anda akan menemukan file PatternPA.Test.Integration.dll.config yang disalin dari Config\App.Debug.config
dan diganti namanya setelahnya.
Ini adalah beberapa catatan yang dapat Anda tinggalkan di file konfigurasi
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- This file is copied and renamed by the 'AfterBuild' MSBuild task -->
<!-- Depending on the configuration the content of projectName.dll.config
is fully substituted by the correspondent to build configuration file
from the 'Config' directory. -->
</configuration>
Di Visual Studio Anda dapat memiliki sesuatu seperti ini
3. Gunakan file scripting di luar Visual Studio
Setiap alat pembangunan (seperti NAnt , MSBuild ) akan memberikan kemampuan untuk mengubah file konfigurasi tergantung pada konfigurasinya. Ini berguna jika Anda membangun solusi di mesin build, di mana Anda perlu memiliki kontrol lebih terhadap apa dan bagaimana Anda mempersiapkan produk untuk dirilis.
Misalnya Anda dapat menggunakan tugas dll penerbitan web untuk mengubah file konfigurasi apa pun
<UsingTask AssemblyFile="..\tools\build\Microsoft.Web.Publishing.Tasks.dll"
TaskName="TransformXml"/>
<PropertyGroup>
<!-- Path to input config file -->
<TransformInputFile>path to app.config</TransformInputFile>
<!-- Path to the transformation file -->
<TransformFile>path to app.$(Configuration).config</TransformFile>
<!-- Path to outptu web config file -->
<TransformOutputFile>path to output project.dll.config</TransformOutputFile>
</PropertyGroup>
<Target Name="transform">
<TransformXml Source="$(TransformInputFile)"
Transform="$(TransformFile)"
Destination="$(TransformOutputFile)" />
</Target>