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
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
Ne fark var arasında #include <file...
Nasıl dosya adları iki iptalleri arası...
Aynı dalda iki farklı işliyor arasında...
'arasında < fark ne;mvc:annotat...
ASP.NET web.config: configSource vs do...