Karmaşık Web yönetimi.Config dağıtım ortamları arasında dosya | Netgez.com
SORU
9 Ocak 2009, Cuma


Karmaşık Web yönetimi.Config dağıtım ortamları arasında dosya

Kimse herhangi bir iyi araçları farklı arasında Web.Config dosya yönetimi/kamu hizmetleri/dağıtım ortamlar oluşturur?

Örneğin, geliştirme SSL etkinleştirmek için istemiyorum XML bir proje var, ama üretim etkin istiyorum. İstediğim farklı günlük ayarları, farklı DB bağlantı dizeleri, farklı hata işleme, dosya yolları farklı... Hatta bazı farklı Birlik çerçevesinde bağlamaları (Tel kadar alay için birim testi yerine gerçek nesneleri için uygulama).

Yeni bir web hizmeti birden fazla dosya düzenleme ve senkronize onları tutmak anlamına gelir çünkü ekleme Web.Config bireysel kopya korumanın bir ağrı.

Ben de fark ettim ki eğer sen pislikle Web.Config o kadar çok el, Visual Studio olacak choke eğer kullanmaya "Öğe Ekle" Sihirbazı, söylemek, eklemek yeni bir Web Hizmeti için bir XML'den bu yana değiştirmek için Web.Bitiş noktası eklemek için bir yapılandırma,nd artık ayrıştırabilir. Mevcut Web geçersiz kılmak için dikkatli olmak zorundayım.Config.

Ben de önceden inşa komut sadece değişiklik yapmak için bazı düzenli ifade kullanarak ve sadece Web.Config yeni bina hakkında düşündüm. Bu en iyi seçenek gibi görünüyor... şimdiye kadar

Başka fikri olan? Bu Web.Config muhtemelen hiç geliştirme ve üretim dağıtımları arasında aynı olması gerekir, çünkü bu çok yaygın bir sorun olması gerektiği gibi görünüyor.


Güncelleme:

Verilen bir dizin içindeki tüm xml dosyalarını almak ve onları birleştirme ve sadece belirli bir dosya adına göre yer alacağı konsol hızlı bir uygulama yazmaya karar verdim.

Bir dizinde yapayım:

WebConfig_All

<configuration>
  <configSections>
    ...
  </configSections>
  <system.web>
    ...
  </system.web>
</configuration>

connectionStrings_Debug

<configuration>
  <connectionStrings>
    <add name="connstr" connectionString="...dev..." />
  </connectionStrings>
</configuration>

connectionStrings_Release

<configuration>
  <connectionStrings>
    <add name="connstr" connectionString="...prod..." />
  </connectionStrings>
</configuration>

Sonra komut satırı aracı çalıştırın ve yapılandırma (Release, özel...hata Ayıklama)pass _All" or_< biten tüm dosyaları birleştirme;yapılandırma>`.

Åžimdi benim Web € var.WebConfig_All tek bir dosyada Config, yapı yapılandırması başına ayrı dosyalar özel ÅŸeyler. O zaman istediÄŸim yere NAnt veya Studio pre-build bir görev veya komut satırı aracı çalıştırmak

Ben de XML mantığı gibi şeyler işlemek için yeterince iyi birleştirme yaptı:

<x>
  <y a="1">
    <z a="1"/>
  </y>
</x>

ile birleÅŸtirme

<x>
  <y a="1">
    <z a="2"/>
  </y>
  <y a="2"/>
</x>

sonuçları:

<x>
  <y a="1">
    <z a="1"/>
    <z a="2"/>
  </y>
  <y a="2"/>
</x>

Şimdiye kadar iyi...:) arıyorum


Takip:

Bu konu biraz eski şimdi, Visual Studio 2010 web yapmak için bir özelliği olduğunu belirtmek istedim.config dönüşümleri yerleşik: http://msdn.microsoft.com/en-us/vstudio/Video/ff801895

Sadece herhangi bir özelliği bu şekilde P uygulama tipik Microsoft bir şekilde tabii, sadece web projeleri web kullanarak dağıtmak için çalışıyor. Diğer projelerde dönüşümleri etkinleştirmek için bir eklenti var, burada yer alan: http://www.hanselman.com/blog/SlowCheetahWebconfigTransformationSyntaxNowGeneralizedForAnyXMLConfigurationFile.aspx

Ayrıca BuildMaster gibi bir araç yapılandırma dosyaları (birlikte oluşturur, testler, DB komut dosyaları, vs...) yönetmek için kullanabilirsiniz

CEVAP
12 Ocak 2009, PAZARTESÄ°


Dışarı onların içine özel ayarlar yapılandırma dosyası kendi tüm bölge ayrıldık. Web uygulama kök dizini altında config klasörü yaratıyoruz ve bölgeye özgü ayarlar orada. Yani config kök altında yaşıyoruz, ne olursa olsun tutulacak.

bizim web.config gibi bir ÅŸey:

.
.
.
<appSettings configSource="config\appSettings.config"/>
<nlog configSource="config\nlog.config"/>
<applicationSettings>
	<MyApp.UI.Properties.Settings configSource="config\Settings.APGUI.config"/>
	<MyApp.BusinessServices.Properties.Settings configSource="config\Settings.Business.config"/>
	<MyApp.Auditing.Properties.Settings configSource="config\Settings.Auditing.config"/>
</applicationSettings>
.
.
.

Eğer serbest bölgeye dağıtmak istiyorsak inşa aracı sadece uygun bölge dosyalarla config kök klasöründeki dosyaları değiştirmek için yapılan bir eylem olacak. Dosya yapısı gibi bir şey görünüyor:

Bu kaynak yapısı görünüyor nasıl kontrol edilir, dağıtılan uygulama sadece herhangi bir alt klasörler ya da ders ile config dir olurdu . EKLEDİ:

\Root
   web.config    
   \Config    
       appsettings.config    
       services.config    
       logging.config    
       \release    
          appsettings.config    
          services.config    
          logging.config    
       \debug
          appsettings.config    
          services.config    
          logging.config

Oldukça temiz ve herhangi bir otomatik oluşturma aracı(kopyalama/dosyalar değiştiriliyor) tarafından desteklenmektedir. Güzel tarafı geliştiriciler farklı tatlar oluşturmak ve kaynak altında tutmak "gerçek" yapılandırmaları. etkilemeden kontrol olmasıdır etkiler

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • alex maybury

    alex maybury

    20 Aralık 2007
  • MrSuicideSheep

    MrSuicideShe

    9 NÄ°SAN 2010
  • videoisunrelated

    videoisunrel

    5 Mart 2009