2

Visual Studio (이전 InCycle) 용 릴리스 관리 도구를 사용하여 빌드/배포 프로세스를 자동화하려고합니다.Visual Studio 릴리스 관리 - 다중 행 값을 갖는 구성 변수?

릴리스 관리 도구에는 web.config (또는 app.config)의 설정을 수정하는 기능이 있습니다. 그러나 이보다 더 많은 것을 할 수있는 상황이 있습니다.

예를 들어 HTTP 요청을 HTTPS로 자동 리디렉션하는 URL 재 작성기 규칙이 있습니다. 그러나 이것은 dev 워크 스테이션에서 (현재) 작동하지 않을 것입니다. 따라서 web.config의 "기본"버전에는 rewriter 규칙이 포함되지 않습니다.이 규칙은 web.config 변환을 통해 빌드/게시 시간에 삽입됩니다.

그러나 릴리스 관리 "구성 변수"메커니즘은 하나 이상의 줄을 대체 값으로 지정할 수 없습니다.
줄 바꿈을 제거하고 XML 단편을 한 줄의 텍스트로 압축 할 수 있다는 것을 알고 있습니다. 하지만 나는 수천 개의 줄이있는 web.config를 가지고 있지 않을 것입니다. 그리고 나는 결국 파일을 보거나 편집 할 필요가있는 우리 IT 사람들이 내가하는 것보다 훨씬 더 강하게 느낄 것이라고 생각합니다.)

일반적으로 web.config 변환 메커니즘에는 몇 가지 모드가 있습니다 : 설정을 변경할 수 있지만 전체 섹션/XML 요소를 삽입하거나 바꾸거나 삭제할 수도 있습니다. Web.config 파일 (기본 제공)에 더 이상 제한되지 않는 것이 좋지만 새로운 기능은 훨씬 제한적으로 보입니다.

내가 누락 된 항목이 있습니까? 다른 사람이이 문제를 발견 했습니까? 그 일을하기 위해 당신은 무엇을 했습니까?

답변

1

xml transform을 사용하여 원하는 것을 얻을 수 있습니다. 빌드 중에 변환이 적용되었는지 확인하고 빌드 출력 폴더에서 사용 가능한 결과 web.config 파일에 URL rewriter 규칙이 포함되어 있는지 확인하십시오. RM은 거기서 그것을 가져다가 다른 일반 토큰 교체를 적용합니다. 여기

이 관련 도움 게시물입니다 : http://incyclesoftware.zendesk.com/entries/21487316-InRelease-with-Web-Deploy

당신은 당신의 방출 경로에 여러 단계가 있고, 예를 들어 첫 번째 단계는 조금 힘들 것보다, 당신의 URL의 라이터 섹션을 안 경우 . 배포 과정에서 변형을 적용해야합니다. 여러 구성 요소/동작을 해당 구성 요소 (xcopy 구성 요소, xml 변환 동작/구성 요소)에 사용해야합니다.

지금은 찾을 수 없지만 배포의 일부로 XML 변환을 수행하기 위해 호출 할 수있는 명령 줄 도구가 있다는 것을 알고 있습니다.

+0

이 시점에서 빌드 구성을 최대한 포괄적으로 유지합니다. 즉, 서버/계층 관련 정보를 빌드에서 제외 시키십시오. 그러나 나는 다른 방식으로하는 것에 대한 주장을 볼 수 있습니다. 그걸 좀 더 씹어야 겠어. – David

+1

우리는 여러 단계를 거치고 있으며 옵션을 공개하고 싶습니다. 배포의 일부로 변환 작업을 시작하기 시작했습니다. 다행히 Microsoft는 [CodePlex] (http://xdt.codeplex.com/)에있는 변환 엔진을 공개했습니다. 예, 독립 실행 형 버전이 있습니다. [Hanselman이 블로그에 올렸습니다 (http : // www .hanselman.com/blog/SlowCheetahWebconfigTransformationSyntaxNowGeneralizedForAnyXMLConfigurationFile.aspx)이며 NuGet 패키지로도 제공됩니다. 나는 그 길을 따라 가면서 어디로 가는지 볼 것입니다. – David

1

rewriter 규칙에 대한 지식이 부족한 것을 사과하지만 web.config의 기본 버전에 존재할 수 있으며 효과적으로 아무것도 수행하지 않고 HTTP로 '다시 작성'하도록 설정할 수 있습니까?

이것이 가능한 경우 변환 프로세스를 통해 토큰 화 된 web.config를 생성하는 web.config.release 파일을 구성하는 것입니다. 그러나 Web One Click Publish를 사용하기보다는 TFS 빌드 정의에 인수를 사용하여 변환을 적용하려면 /p : UseWPP_CopyWebApplication = true/p : PipelineDependsOnBuild = false를 사용합니다. 그러면 배포 할 환경에 대해 전혀 알지 못하는 놓기 폴더가 만들어집니다. 그런 다음 RM에서 XCopy Deployer 기반 구성 요소를 사용하여 웹 사이트를 배포하고 해당 환경에 대한 모든 토큰 화 된 값을 대체하기 만하면됩니다. 이 기술에 대한 자세한 내용은 내 블로그 게시물 here을 참조하십시오.

+0

URL rewriter 모듈에는 전체적으로 많은 부분이 없으며, 거기에는 몇 가지 문제점이 있습니다. (대부분 시행 착오를 거쳐 작업하고 있습니다.) – David

+0

설명하는 내용은 다음과 같습니다. 우리가 잠정적으로 향하고 있던 방향 (RM에 의해 처리되는 "일반적인"빌드, 환경 - 특정 변환). 나는 당신의 블로그 포스트를 보여 줄 것이다 - 불행히도 사이트는 우리의 방화벽에 의해 차단된다. – David

관련 문제