우리 프로젝트에는 dev, qa, uat 및 prod에 대한 구성을 유지해야했던 것과 같은 문제가 있습니다. 다음은 우리가 따랐던 것입니다 (MSBuild에 익숙한 경우에만 해당).
MSBuild 커뮤니티 작업 확장과 함께 MSBuild를 사용하십시오. 여기에는 올바른 노드를 시작하면 XML 파일의 항목을 '대량 업데이트'할 수있는 'XmlMassUpdate'작업이 포함됩니다.
구현:
1) 당신의 dev env 엔트리를 가질 하나의 설정 파일이 필요합니다; 이것은 솔루션의 구성 파일입니다.
2) 각 환경에 대해 다른 항목 (주로 appSettings 및 ConnectionStrings) 만 포함하는 'Substitutions.xml'파일이 있어야합니다. 환경 전체에서 변경되지 않은 항목은이 파일에 넣을 필요가 없습니다. 그들은 솔루션의 web.config 파일에 살 수 있으며 작업에 의해 손대지 않을 것입니다
3) 빌드 파일에서 XML 대량 업데이트 작업을 호출하고 올바른 환경을 매개 변수로 제공하십시오.
아래 예를 참조하십시오.
<!-- 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'를 'QA'또는 'Prod'로 바꿉니다. 당신은 건물입니다. 복구 할 수없는 실수를 피하기 위해 실제 구성 파일 자체가 아닌 구성 파일의 사본에서 작업해야합니다.
빌드 파일을 실행 한 다음 업데이트 된 구성 파일을 배포 환경으로 옮기면됩니다.
더 나은 개요를 보려면 다음을 읽으십시오.
http://blogs.microsoft.co.il/blogs/dorony/archive/2008/01/18/easy-configuration-deployment-with-msbuild-and-the-xmlmassupdate-task.aspx