SORU
10 Kasım 2011, PERŞEMBE


Nasıl farklı bir uygulama seçmek için.birçok için config yapılandırmaları

Bir ben vardll tip projebu MSTest entegrasyon testleri içerir. Benim makinede testlerden geçmiş, ve CI sunucusu (Programdır kullanıyorum) olmasını ben de aynısından istiyorum. Ama bu testleri uygulama konusunda bazı ince ayarlar yapmak gerekiyor çünkü başarısız.config. Bu ayrı ikinci bir uygulama düşünüyordum neden olur.CI sunucu ayarlarını tutan dosya config.

İstiyorum

/Sln
 /Proj
  app.config (I think this is required by VS)
  app.Release.config (This is a standalone independent config file)

Böylece eğer CI yapılandırma kurmak Serbest yapılandırma seçerseniz, uygulamayı kullanmak istiyorum.Bırakın.yerine, uygulama yapılandırma dosyası.config

Sorun

Soru

CEVAP
14 Kasım 2011, PAZARTESİ


Zaten fark ettiğiniz gibi, bir için farklı bir yapılandırma dosyaları kullanmak için varsayılan ve kolay bir yolu yokturTür kitaplığı (.dll)proje. Sebebi geçerli thining olmasıdır: "gerek yok"! Geliştiriciler çalıştırılabilir dosya için yapılandırma gerekir sanırım çerçeve: bu bir konsol, masaüstü, web, mobil uygulama veya başka bir şey. İçin bir yapılandırma sağlayan başlatındllbir ara ben bir şey ile sona erebilirconfig cehennem. Bu ve değişkenleri gibi garip değerler görünüşte hiçbir yerden geliyor neden artık anlayasınız (kolay).

"Bekle", - "ama benim için Bu entegrasyon/birim testi, ve ihtiyacım var . diyebilirsiniz ^em>bir kütüphane".! Ve bu doğru ve bu ne yapabilirim (sadece birini seç karışmaz)

1. SlowCheetah - geçerli yapılandırma dosyası dönüştürür

Senin için SlowCheetah - Visual Studio tüm düşük seviyeli mu bu eklenti alay XML (veya dönüşüm) yükleyebilirsiniz. Çalışma şekli, kısaca:

  • SlowCheetah yükleyin ve Visual Studio yeniden başlatın
  • Çözüm yapılandırmaları tanımlamak (Hata ayıklamaveBırakınvarsayılan olarak vardır), daha (çözüm üzerinde sağ tıklayın . Ekle ^em>Çözüm GezginiYapılandırma Yöneticisi...Etkin Çözüm YapılandırmasıYeni...
  • Gerekirse bir yapılandırma dosyası ekleyin
  • Doğru config tıklayın ^ dosya .Dönüşümü Ekleyin
    • Bu Dönüşüm dosyalarını - yapılandırma başına bir oluşturur
    • Dönüşüm dosyaları/mutators enjektörleri iş olarak, orijinal config dosyasında gerekli XML kodu bulmak ve yeni hatları enjekte veya ne söylersen gereken değeri, mutasyona

2. Keman ile .proje dosya kopyalama-yeniden adlandırır yepyeni bir yapılandırma dosyası

Aslında here alınan. Visual Studio içine gömebilirsiniz özel MSBuild bir görev.projen içindosya. Kopyala ve proje dosyası aşağıdaki kodu 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 proje Config adında bir klasör oluşturun ve yeni dosyalar eklemek için:App.Hata ayıklama.config,App.Bırakın.configve benzeri. Şimdi, yapılandırmanıza bağlı olarak, Visual Studio Config bir klasördeki config dosyasını seç ve Kopyala Yeniden Adlandır çıkış dizine. Eğer olsaydıPatternPA.Test.Entegrasyonproje ve birHata ayıklamabu bulacaksınız oluşturun, sonra config seçili çıktı klasöre birPatternPA.Test.Entegrasyon.dll.configConfig\App.Debug.config kopyalanmıştır ve daha sonra yeniden adlandırılan dosya.

Bu yapılandırma dosyaları bırakabilirsiniz 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 böyle bir şey olabilir

Project structure

3. Visual Studio dışında komut dosyaları kullanın

Her oluşturma aracı (NAnt, MSBuild gibi) yapılandırma dosyası yapılandırma bağlı olarak dönüştürmek için yetenekleri sağlar. Bu sürüm için Ürün hazırlamak ne üzerinde daha fazla kontrol sahibi olmak gerekir nerede bir makine inşa, çözüm oluşturmak ve yararlıdır.

Örneğin web yayımlama dll görevi, herhangi bir yapılandırma dosyası dönüştürmek için 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>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • We've moved!

    We've moved!

    7 Ocak 2008