2017-01-17 6 views
1

dirPath 원본 및 대상 공급자에 대해 sync 동사를 사용하여 Windows 서비스를 배포하려면 명령 줄에서 msdeploy를 사용하고 있습니다. 여태까지는 그런대로 잘됐다.웹 배포 (MSDeploy) 3.6 파일 바꾸기 규칙을 바꿉니다

내 프로젝트의 빌드 에셋에는 환경 별 설정 파일이 있고 특정 환경으로 배포하는 동안 바꾸기 규칙을 사용하여 대상 환경의 설정 파일을 기본 구성 파일 이름으로 바꾸고 싶지만 내 교체 방법 아무 것도 내가 원하는 결과를 얻지 못하는 것 같습니다. 나는 운이 있지만, 가장 논리적 인 것 같습니다 하나 규칙의 다른 구성의 번호와 시도했습니다 이것은 하나입니다 : 나는 대체 규칙없이 배포하는 경우

-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.Dev\.exe\.config,replace=Service.exe.config 

모두 Service.Dev.exe.configService.exe.config은 함께 배포 예상되는 각 콘텐츠. 위의 바꾸기 규칙을 추가하면 단지 Service.exe.config이되고 그 파일의 내용은 소스에서가 아니라 Service.Dev.exe.config의 내용이됩니다. 나는 matchreplace 부품의 사양을 교환 (그리고 정규 표현식 < 변경 - 따라> 일반 텍스트를) 경우에 도착 :

-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.exe\.config,replace=Service.Dev.exe.config 

난 그냥 Service.exe.config의 내용과 대상에없는 Service.exe.configService.Dev.exe.config를 얻을.

나는 확실한 것이 빠져 있다고 확신하지만, 무엇입니까?

답변

2

이 질문에 직접 대답하지는 않지만 근본 문제에 대한 더 나은 해결책이라고 생각합니다.

여기 실제 문제는 다른 환경에 대한 설정 관리입니다. 많은 개발자들이 당신처럼 각 환경마다 다른 설정을 만듭니다. 이 접근법은 서로 다른 설정 파일에 걸쳐 많은 중복을 요구하는데, 이는 쉽게 동기화되지 않을 수 있습니다.

다른 환경에서 구성을 관리하기위한 최선의 방법은 WebDeploy 매개 변수화입니다. 설정 변경과 비슷하게, 단일 기본 구성 파일을 조정하여 복제가 훨씬 적습니다. 그러나 매개 변수화는 빌드 타임 대신 배포시 변경 사항을 적용하기 때문에 선호됩니다. 큰 성공을 거둔 50 개 이상의 응용 프로그램에이 도구를 사용합니다.

다음은 블로그 게시물입니다. http://www.dotnetcatch.com/2014/09/08/parameterizationpreview-visual-studio-extension/