2009-06-18 3 views
1

저는 빌드가 매우 정직해야하며 인간의 개입이 덜해야 함을 알게되었습니다. 내 상황에서는 DEV (개발 버전), SIT (STG 통합 테스트) 및 UAT (사용자 승인 테스트)의 3 가지 환경이 있습니다. 이러한 모든 환경에는 서로 다른 데이터베이스 연결 세부 정보 및 기타 설정 (예 : 로깅)이 있습니다.Visual Studio에서 C# 프로젝트 용 다중 구성 파일 관리

현재 응용 프로그램을 SIT 환경에 배포해야하는 경우 응용 프로그램을 빌드해야합니다. 대상 환경에 설치하고 수동으로 구성 파일을 수정하십시오. 일부 항목이 누락 될 수 있으므로 문제가됩니다. 구성 파일이 커지면 상황이 악화됩니다.

질문

1 - VS.에서 빌드를 만드는 환경의 이름을 지정 어쨌든 거기 따라서 해당 환경의 구성 파일이 사용됩니다.

2 - 빌드시 사람의 개입을 줄이는 데 도움이되는 다른 방법은 무엇입니까?

3 - 내 응용 프로그램 이름이 "Foo"라고 가정합니다. 설치 가능한 패키지를 만들 솔루션의 패키지 프로젝트가 있습니다. 환경에 따라 제품 제목을 지정해야합니까? SIT가 선택되면 설치시 제품 이름이 "Foo-SIT"가됩니다. 나는 이것이 환경 버전 1이 설치되고있는 혼란을 피할 것이라고 생각한다. 어떤 좋은 대안이 있으면 기꺼이 듣겠습니다.

답변

1

이 문제를 처리하는 한 가지 방법은 3 개의 프로젝트를 만들고 새 프로젝트의 이름에 환경을 배치하는 것입니다. 그런 다음 빌드 후 이벤트를 사용하여 프로젝트 이름을 기반으로 올바른 파일을 복사하십시오.

게시 빌드 이벤트에서 $ (ProjectName) 매크로를 기반으로 프로젝트 이름을 알 수 있습니다. 그래서 그것은 당신이 여러 프로젝트를 최신 상태로 설정을 유지하지 않아도 이러한 프로젝트는 하나의 프로젝트에 대한 실제 작업 (편집)의 대부분을 연기하기 위해 최선의

IF "$(ProjectName)"="devproject" (
    copy ... 
    copy ... 
) 

등의 작업을 수행 할 수 있습니다.

2

2 - 당신은 절대적으로 옳습니다. 가능한 한 빌드 및 배포 프로세스를 자동화해야합니다. 가장 좋은 방법은 NAnt과 같은 것을 사용하여 자동화 된 빌드/배포 스크립트를 설정하는 것입니다. 스크립트는 각 환경에 대한 타겟을 가질 수 있습니다 (예 :

<project name="MyApp" xmlns="http://nant.sf.net/release/0.85/nant.xsd"> 
    <target name="DEV"> 
     <!-- execute any tasks needed to build the app, such as msbuild(1) --> 

     <!-- execute any tasks needed to build the tweak the config files, such as xmlpeek/xmlpoke(2) --> 

     <!-- execute any tasks needed to copy the now-built and configured project output the tweak the destination server, such as copy(3)--> 
    </target> 

    <target name="SIT">...</target> 
    <target name="UAT">...</target> 

</project> 

NAnt에 익숙하지 않은 경우 스크립트를 작성하고 실행하고 작성하는 데 하루가 걸리지 않습니다. 서버에 VNC를 넣고 구성 파일을 다시 조정할 필요가 없으므로 즉시 성과를 거둘 수 있습니다.

2

당신은 EnvRide tool on codeplex.com 볼 수 있습니다. 자동화 된 방식으로 여러 구성 파일을보다 쉽게 ​​관리 할 수 ​​있도록하는 목적입니다.

관련 문제