Projemiz, dev, qa, uat ve prod için yapılandırmaları korumak zorunda kaldığımız aynı sorunu yaşıyor. İşte takip ettiklerimiz (yalnızca MSBuild hakkında bilginiz varsa geçerlidir):
MSBuild MSBuild Topluluğu görev uzantısıyla kullanın. Başlamak için doğru düğümü verdiğinizde, herhangi bir XML dosyasındaki girdileri 'toplu olarak güncelleyebilen' 'XmlMassUpdate' görevini içerir.
Uygulamaya:
1) dev env girişlerinizi içeren bir yapılandırma dosyasına sahip olmanız gerekir; bu, çözümünüzdeki yapılandırma dosyasıdır.
2) Her ortam için yalnızca FARKLI (çoğunlukla appSettings ve ConnectionStrings) girişleri içeren bir 'Substitutions.xml' dosyanız olması gerekir. Ortamda değişmeyen girdilerin bu dosyaya konması gerekmez. Çözümün web.config dosyasında yaşayabilirler ve görev tarafından dokunulmazlar
3) Derleme dosyanızda, XML toplu güncelleme görevini çağırın ve parametre olarak doğru ortamı sağlayın.
Aşağıdaki örneğe bakın:
<!-- Actual Config File -->
<appSettings>
<add key="ApplicationName" value="NameInDev"/>
<add key="ThisDoesNotChange" value="Do not put in substitution file" />
</appSettings>
<!-- Substitutions.xml -->
<configuration xmlns:xmu="urn:msbuildcommunitytasks-xmlmassupdate">
<substitutions>
<QA>
<appSettings>
<add xmu:key="key" key="ApplicationName" value="NameInQA"/>
</appSettings>
</QA>
<Prod>
<appSettings>
<add xmu:key="key" key="ApplicationName" value="NameInProd"/>
</appSettings>
</Prod>
</substitutions>
</configuration>
<!-- Build.xml file-->
<Target Name="UpdateConfigSections">
<XmlMassUpdate ContentFile="Path\of\copy\of\latest web.config" SubstitutionsFile="path\of\substitutionFile" ContentRoot="/configuration" SubstitutionsRoot="/configuration/substitutions/$(Environment)" />
</Target>
'$ Environment' ortamını 'QA' veya 'Prod' ile değiştirin. için inşa ediyorsun. Kurtarılamayan olası hatalardan kaçınmak için gerçek yapılandırma dosyasının değil, bir yapılandırma dosyasının kopyası üzerinde çalışmanız gerektiğini unutmayın.
Sadece derleme dosyasını çalıştırın ve güncelleştirilmiş yapılandırma dosyasını dağıtım ortamınıza taşıyın ve işiniz bitti!
Daha iyi bir genel bakış için şunu okuyun:
http://blogs.microsoft.co.il/blogs/dorony/archive/2008/01/18/easy-configuration-deployment-with-msbuild-and-the-xmlmassupdate-task.aspx