8

현재 빌드 구성을 기반으로 Web.config 변환을 쉽게 설정할 수 있습니다. Debug의 경우 connectionString=server;..을, Release의 경우 connectionString=./SQLExpress;..을 사용하십시오.게시 프로필과 Web.config transform을 연결할 수 있습니까?

그러나 웹 게시 프로필에 기반한 일부 Web.config 변환을 수행 할 수 있습니까? 나는. 프로필 Server1connectionString=server1;..을 사용하고 Server2connectionString=server2;..을 사용 하시겠습니까?

답변

0

프로덕션 서버에 실수로 디버그 구성을 배포 할 수 있으므로 게시 프로필이 빌드 프로필과 별개라고 생각합니다.

그러나 MSDeploy를 사용하는 경우에는 거기에있는 web.config를 수정할 수있는 방법이 있습니다. 자세한 내용은 MSDeploy - Changing Connection string parameter after deploying the package을 참조하십시오.

0

약간 다른 방법이있을 수 있습니다.

프로덕션 서버에서 각 프로덕션 컴퓨터의 c : \ windows \ system32 \ drivers \ etc \ hosts 파일에 customdb의 더미 항목을 만듭니다. 각 컴퓨터가 사용할 데이터베이스를 가리키고 있습니다. 그런 다음 connectionString = customdb; 모든 프로덕션 서버용.

오직이 단점은 호스트 파일에 대한 액세스가 필요하며 db를 사용해야한다는 것입니다.

희망이

<connectionStrings configSource="cstrings.config"/> 

이 방법의 Web.config은 동일합니다 ... 우리는 별도의 설정 파일에있는 모든 기계/프로필 특정 구성을 유지

+0

흥미 롭습니다. 그러나 또 다른 단점은 호스트 파일을 (쉽게) 버전 제어 할 수 없다는 것입니다. 호스트 파일은 컴퓨터 관련 설정을 포함하고 배포 프로세스에 복잡성을 더하여 일반적으로 피해야하는 시스템 경로에 대한 쓰기 액세스가 필요하기 때문입니다. – Abel

5

는 다음과 같이 그들을 포함 configSource을 사용하는 데 도움이 변환을 필요로하지 않습니다. 연결 문자열, smtp 설정 및 앱 설정에 대해이 작업을 수행합니다.

우리의 버전 관리의 Web.config와 등 cstrings.config.production, cstrings.config.staging, 같은 "기계 특정"파일

이 구조를 가지고 일단 다른 프로필에 대한 이미지를 생성하는 것은 쉽다. 환경 변수를 읽고 적절하게 배포하는 각 시스템에 배포 스크립트가 있습니다. 예를 들어 스테이징 서버 빌드 스크립트는 cstrings.config.staging을 cstrings.config 등으로 복사합니다.

+0

배포 스크립트를 실행하여 현재 프로필과 적절한 연결 문자열을 연결하려면 어떻게합니까? – abatishchev

+0

@abatishcev : 빌드 서버에는 테스트, 준비 및 생산을위한 대상이 있습니다. 깨끗한 결제 (실제로 svn 내보내기)가 이루어집니다. 빌드 스크립트 "는 $ {bin} /cstrings.config. $ {Destination} $ {bin} /cstrings.config"의 이름을 바꾸고 대상 컴퓨터에 단위 테스트, zip 및 ftp 배포를 실행합니다. 각 대상에는 버전 제어에서 cstrings, smtp 및 appsettings 구성 파일이 있습니다. 예 : cstrings.config.staging, smtp.config.staging, appsettings.config.staging. FYI : 보안을 매우 중요시하는 경우 대상 컴퓨터의 cstrings.config를 읽기 전용 파일로 두어도됩니다. 우리 환경에서는 큰 문제가 아닙니다. – Rob

관련 문제