2010-11-25 3 views
4

자동화 빌드에서 작동하는 web.config 변환을 얻으려고 애쓰는 중입니다.팀 빌드 2010 및 web.config 변환 문제

하나의 ASP.NET 웹 응용 프로그램과 8 개의 클래스 라이브러리가 포함 된 합리적인 해결책이 있습니다. 우리는 세 명의 개발자가 프로젝트에 참여하고 있으며, 지금까지 각각 로컬 폴더에 솔루션을 "게시"한 다음 파일 복사본을 사용하여 테스트 서버에 배포했습니다. TFS 2010을 사용하여 자동화 된 빌드/배포 솔루션을 설치하려고합니다.

빌드 프로세스 템플릿에 빌드 정의를 만들고 msdeploy.exe에 대한 호출을 추가하여 응용 프로그램을 테스트 서버에 배포합니다. . 여태까지는 그런대로 잘됐다!

그런 다음 web.config 변환을 구현하려고 시도했지만 작동시키지 못했습니다. 내 PC에서 로컬로 빌드하고 게시하는 경우 "게시"폴더에는 변환 된 올바른 web.config 파일이 있습니다.

팀 빌드를 사용하면 변형이 발생하지 않으며 기본 web.config 파일 만 있습니다.

내가 비슷한에, 다른 사람이 제안으로, 웹 응용 프로그램의 프로젝트 파일의 빌드 후 단계를 추가하는 시도

:

<target name="AfterBuild"> 
<TransformXml Source="Web.generic.config" 
      Transform="$(ProjectConfigTransformFileName)" 
      Destination="Web.Config" /> 
</target> 

하지만 소스 web.config 파일이 "applicationSettings"가 beacuse이 실패 섹션 . 오류가 발생합니다.

'applicationSettings'요소에 대한 스키마 정보를 찾을 수 없습니다. 그들은 웹이 없어 아마도 때문에,

내가 본 suggstions은 약

/t:TransformWebConfig /p:Configuration=Debug 

같은 빌드 정의에서의 MSBuild 작업에 인수를 추가하지만 클래스 라이브러리 프로젝트를 빌드 할 때이 쓰러져서 .config 파일.

아이디어가 있으십니까? 다른 사람들과 마찬가지로, 나는 이것이 "효과가있을 것"이라고 생각했지만 분명히 그렇지 못했다. 이것이 내가 일하기 위해 필요로하는 마지막 부분이며 그것이 나를 미치게합니다. 나는 msbuild 전문가가 아니므로 평범하고 단순하십시오!

미리 감사드립니다. 대신 빌드 프로세스 템플릿에 작업 나 자신을 추가하여 배포 일을하려고의

더그

답변

3

나는 방금 이것을 통과했다. 우리의 빌드는 8 개의 클래스 라이브러리와 9 개의 웹 어플리케이션을 하나의 솔루션으로 가지고 있다는 점에서 다소 복잡했습니다. 그러나 흐름은 동일합니다.

우선 빌드 타겟을 제거하십시오. 그럴 필요 없어.

MSDeployPublish 서비스를 사용해야합니다. 이를 위해서는 대상 서버에 올바르게 설치되고 구성되어야합니다. 이 부분에 대한 정보는 다음 링크를 확인하십시오.

정확한 사용자 권한으로 서버를 올바르게 구성해야합니다. 다음 사이트를 통해 제대로 설정하는 데 도움이되었습니다.

http://william.jerla.me/post/2010/03/20/Configuring-MSDeploy-in-IIS-7.aspx
http://vishaljoshi.blogspot.com/2010/11/team-build-web-deployment-web-deploy-vs.html
How can I get TFS2010 to run MSDEPLOY for me through MSBUILD?

다음 부분

은 빌드 정의가 올바른 MSBuild에서 매개 변수를 게시 할 수 있도록 설정되어 있어야합니다. 이러한 매개 변수는 빌드 정의의 프로세스> 3. 고급> MS 빌드 인수 행에 입력됩니다. 여기에 힌트는 다음과 같습니다

(don't change the following for any reason) 
/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=False 
/p:MSDeployPublishMethod=WMSVC 
/p:SkipExtraFilesOnServer=True 
/p:AllowUntrustedCertificate=True 

(These control where it's going) 

/p:MSDeployServiceUrl="https://testserver.domain:8172/msdeploy.axd" 
/p:UserName=testserver\buildaccount 
/p:Password=buildacctpassword 
/p:DeployIisAppPath="MyApp - TESTING" 

은 물론 사용자가 해당 AXD (이전 링크 참조)에 대한 액세스를 허용하는 대상 서버에 IIS 구성해야합니다. IisAppPath는 대상 서버의 웹 사이트 이름입니다.

빌드 자체가이를 처리하므로 구성 변환에 특별한 작업을 수행 할 필요가 없습니다. 프로세스> 1. 필수> 빌드 할 항목> 빌드 할 구성에서 라인에 올바른 설정을 지정하십시오.

+1

그냥 옆줄. 이 모든 부분에 두 가지 어려운 부분이있었습니다. 첫 번째는 MSDeployService를 웹 서버에 제대로 설치하는 것입니다. 두 번째는 모든 올바른 MSBuild 매개 변수를 알아내는 것입니다. Doug가 언급 한 일부 사이트는 동일한 시스템에서 구축 및 배포를 목표로하므로 매개 변수가 작동하지 않습니다. 전부해서, 첫번째 통과는 계산하기 위해 약 6 시간이 걸렸다. 이제 설정되었으므로 약 5 분 안에 새로운 빌드 정의를 만들 수 있습니다. – NotMe

+0

Great post Chris, 나는 또한이 모든 것을 다뤄 냈습니다. (부분적으로는 서버에서 이상하게 보였기 때문에 부분적으로는 호스트 된 tfs를 사용했기 때문에 조금 더 오래 걸렸습니다.)하지만 주제에 대한 요약은 정말 좋았습니다. Chrs. – MemeDeveloper

+0

또 다른 참고 사항 : 지난 주에 새 서버에서이 문제를 설정했습니다. MSDeploy의 최신 설치 프로그램은 이전 버전보다 훨씬 낫습니다. – NotMe

1

, 난 이씨는 조시의 블로그 게시물 here의 조언을 따랐다.

이제 전체 프로젝트가 빌드되고 배포되며 web.config 변환도 작동합니다. 훌륭한!

이제 해결해야 할 또 다른 문제가 있습니다! 웹 응용 프로그램은 웹 서비스를 참조하고 XmlSerializers dll의 빌드 프로세스 결과를 가져옵니다. 그러나 이것은 정상적으로 구축되었지만 웹 호스트에 배포되지 않습니다. 나는 이것이 새로운 지위를 필요로한다고 생각한다!

더그

+0

여기 내 XmlSerializers 문제에 대한 답변을 찾았습니다. http://stackoverflow.com/questions/3636103/tfs-2010-creating-net-4-0-xmlserializers-dll-for-net-3-5-application – Doug