SlowCheetah eklentisini kullanın . SlowCheetah'ın nasıl kullanılacağına dair daha fazla seçenek ve ayrıntı için okumaya devam edin.
Daha önce fark ettiğiniz gibi, bir Kitaplık türü (.dll) projesi için farklı yapılandırma dosyalarını kullanmanın varsayılan ve kolay bir yolu yoktur . Bunun nedeni, şu anki düşüncenin "gerek yok" olmasıdır! Çerçeve geliştiricileri, yürütülebilir dosya için yapılandırmaya ihtiyacınız olduğunu varsayar: bir konsol, masaüstü, web, mobil uygulama veya başka bir şey olabilir. Bir dll için yapılandırma sağlamaya başlarsanız , yapılandırma cehennemi diyebileceğim bir şeyle karşılaşabilirsiniz . Artık (kolayca) neden bunun ve bu değişkenlerin görünüşte hiçbir yerden gelen bu kadar tuhaf değerlere sahip olduğunu anlayamayabilirsiniz.
"Bekleyin", diyebilirsiniz, "ama buna entegrasyon / birim testim için ihtiyacım var ve bu bir kitaplık!". Ve bu doğru ve yapabileceğiniz şey bu (yalnızca birini seçin, karıştırmayın):
1. SlowCheetah - mevcut yapılandırma dosyasını dönüştürür
Sizin için tüm düşük seviyeli XML dürtmeyi (veya dönüştürmeyi) yapan bir Visual Studio eklentisi olan SlowCheetah'ı yükleyebilirsiniz . İşleyiş şekli kısaca:
- SlowCheetah'ı yükleyin ve Visual Studio'yu yeniden başlatın (Visual Studio> Araçlar> Uzantılar ve Güncellemeler ...> Çevrimiçi> Visual Studio Galerisi> "Yavaş Çita" için arama yapın)
- Çözüm yapılandırmalarınızı tanımlayın ( Hata Ayıklama ve Yayın varsayılan olarak vardır), daha fazlasını ekleyebilirsiniz ( Çözüm Gezgini > Yapılandırma Yöneticisi ... > Etkin Çözüm Yapılandırması > Yeni ...
- Gerekirse bir yapılandırma dosyası ekleyin
- Yapılandırma dosyasına sağ tıklayın> Dönüşüm Ekle
- Bu, yapılandırmanız başına bir tane olmak üzere Dönüşüm dosyaları oluşturacaktır
- Dönüştürme dosyaları enjektör / mutatör olarak çalışır, orijinal yapılandırma dosyasında gerekli XML kodunu bulur ve yeni satırlar enjekte eder veya gerekli değeri değiştirir, ne yapmasını söylerseniz yapın
2. .proj dosyasıyla oynayın - tamamen yeni bir yapılandırma dosyasını kopyalayıp yeniden adlandırır
Aslen buradan alınmıştır . Visual Studio .proj dosyasına ekleyebileceğiniz özel bir MSBuild görevidir . Aşağıdaki kodu kopyalayıp proje dosyasına yapıştırın
<Target Name="AfterBuild">
<Delete Files="$(TargetDir)$(TargetFileName).config" />
<Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config"
DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
Şimdi projede adı verilen bir klasör oluşturun Config
ve buraya yeni dosyalar ekleyin: App.Debug.config , App.Release.config vb. Şimdi, yapılandırmanıza bağlı olarak, Visual Studio bir Config
klasörden yapılandırma dosyasını seçecek ve çıktı dizinine kopyalayıp yeniden adlandıracaktır. Dolayısıyla, PatternPA.Test.Integration projeniz ve bir Debug yapılandırması seçtiyseniz, derlemeden sonra çıktı klasöründe, buradan kopyalanan Config\App.Debug.config
ve daha sonra yeniden adlandırılan bir PatternPA.Test.Integration.dll.config dosyası bulacaksınız .
Bunlar, yapılandırma dosyalarında bırakabileceğiniz bazı notlar
<?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>
Visual Studio'da bunun gibi bir şeye sahip olabilirsiniz
3. Komut dosyası dosyalarını Visual Studio dışında kullanın
Her derleme aracı ( NAnt , MSBuild gibi ), yapılandırmaya bağlı olarak yapılandırma dosyasını dönüştürmek için yetenekler sağlayacaktır. Çözümünüzü, ürünü piyasaya sürmek için neyi ve nasıl hazırlayacağınız konusunda daha fazla kontrole sahip olmanız gereken bir yapı makinesinde oluşturuyorsanız bu yararlıdır.
Örneğin, herhangi bir yapılandırma dosyasını dönüştürmek için web yayımlama dll'sinin görevini kullanabilirsiniz.
<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>