2013-08-13 6 views
3

솔루션을 빌드하고 솔루션 내에 여러 웹 응용 프로그램을 배포 할 TFS 2012 빌드 정의를 설정하려고합니다. 나는 정확히 무엇을 하려는지 주소가있는 this article을 보았고 here의 해결책에 동의하는 것으로 보인다.TFS 2012 웹 배포 용 빌드 정의는 프로젝트 파일에 정의 된 매개 변수를 무시합니다.

그래서이 기사에서 설명한 빌드 정의/프로젝트 구성을 구현해 보았습니다.하지만 내가하는 일과 상관없이,이 모양처럼 csproj 파일의 특정 구성 속성 그룹에 넣은 매개 변수를 무시하는 것처럼 보입니다. :

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MyConfig|AnyCPU' "> 
    ... 
    <DeployIisAppPath>My Website Name</DeployIisAppPath> 
    <MsDeployServiceUrl>MyWebServer</MsDeployServiceUrl> 
</PropertyGroup> 

내가 얻을 내가 구축하기 위해 노력하고있어 각 프로젝트에 대해 다음과 같은 오류 :

Web Deploy publish/package validating error: Missing or Invalid property value for $(MsDeployServiceUrl) 

그래서 내가 빌드 정의의 MSBuild를 인수 대신의 csproj 파일에 MsDeployServiceUrl을 정의하는 시도 . 이것은 위의 오류를 해결하지만, 나는이 오류 얻을 :

The “ConcatFullServiceUrlWithSiteName” task was not given a value for the required parameter “SiteAppName”. 

그래서 그것 중 하나 csproj 파일에서 DeployIisAppPath 매개 변수를 읽고 있지를, 나는 각각의 다른 때문에 MSBuild를 인수 라인이 이동할 수 없습니다 프로젝트를 배포하려고합니다.

마치 배포 과정에서 내가 구축하고있는 구성을 인식하지 못하는 것처럼 csproj 파일에서 올바른 PropertyGroup을 찾아서 매개 변수를 읽을 수 없습니다. 그러나 빌드 정의의 "Configurations to Build"줄에 구성을 지정했으며/p : Configuration = MyConfig를 MSBuild Arguments 줄에 추가하려고 시도했지만 문제가 해결되지 않은 것 같습니다.

업데이트 :

좋아, TFS는 솔루션에 정의 된 구성을 인식하지 못하는 것 같다. 빌드 정의에서 "빌드 할 구성"을 선택하면 대화 상자의 구성 열에있는 드롭 다운 목록에 기본 "디버그"및 "릴리스"만 표시됩니다. 우리는 우리 솔루션에 정의 된 다른 구성이 반 십여 가지가되어 나타나지 않습니다. 필자는 구성을 수동으로 입력하려고 시도했지만 철자가 정확하다는 것을 두 번 확인했습니다. 빌드되지만 올바른 구성을 사용하지 않습니다 (잘못된 Web.config 변환이 적용됨). 이것은 프로젝트 파일의 올바른 PropertyGroup에서 빌드 특성을 읽지 않는 이유를 설명합니다.

TFS 설치/구성에 문제가 있습니까? 솔루션 정의 구성이 드롭 다운 목록에 나타나야합니까? 아니면 항상 사용자 정의 구성 이름을 수동으로 입력해야합니까?

답변

3

그래도 문제가 남아 나는

분명히 뭔가 잘못 구성 관리자에서 우리의 모든 솔루션/프로젝트 구성/제거 다시 만들어 자신을이 문제를 해결하기 위해 관리 우리의 솔루션 구성이 빌드 정의에서이를 사용하려는 시도를 망쳤습니다. 가장 좋은 추측은 그들이 생성되었을 때 기존 구성에서 복사/붙여 넣기가되었지만 그 과정에서 빠진 것이 었으며 여전히 원본 소스 구성을 가리키는 것입니다. 그러나 나는 원래 그 (것)들을 창조 한 사람이 아니므로, 무엇이 잘못되었는지 확신 할 수 없습니다.

어쨌든 각 구성 파일의 각 구성에 대한 PropertyGroup XML 백업을 저장 한 다음 구성 관리자를 통해 솔루션과 각 프로젝트에서 각 구성을 완전히 제거했습니다. 그런 다음 각 구성을 다시 만들고 내 프로젝트에서 각 프로젝트의 PropertyGroup을 복원했습니다. 이제는 내 빌드 정의가 올바른 PropertyGroups에서 빌드 속성을 읽고 Web.config에서 올바른 변환을 수행하고 있습니다.

+0

기사에서 누락 된 부분은 빌드 정의에서 어떤 구성이 만들어 지는지 지정할 필요가 있습니다. 광산이 기본적으로 아무 것도 지정하지 않았고 당신과 같은 오류가 발생했습니다 (이것이 내가 무엇을 만들고 있는지 궁금하게 만듭니다). 어쨌든, 일단 Release CPU를 지정하면 작동합니다. –

+0

그건 내 문제가 아니야. 빌드 정의에 지정된 구성이 있었지만 솔루션의 모든 프로젝트에 대한 구성을 다시 만들 때까지 작동하지 않았습니다. – jkindwall

+0

이것은 단지 나에게 일어 났지만 하나의 프로젝트에서만 발생했습니다. 방금 솔루션 구성에서 릴리스를 제거하고 (프로젝트 특정 구성을 다시 실행하지 않았 음) 다시 읽었습니다. –

1

빌드 할 때 definMsDeployServiceUrltion 빌드중인 구성이 정확히 동일한 CPU와 일치하는지 확인하십시오. "AnyCPU"또는 "Any CPU". 여분의 공간을 확인하십시오. 서로 다른 vs bsions 버전과 tfs 버전 사이의 라인을 따라 어딘가에 분열 된 공간이 나타나거나 사라졌습니다. 이것은 전에 나를 잡았습니다.

테스트로 .csproj 파일의 MsDeployServiceUrl 속성을 현재 속성 그룹 노드 밖으로 이동합니다. 그런 다음 빌드를 수행하십시오.그 다음 빌드 경우는 eill 당신의 개념이 작동 증명하지만 여전히

+0

과연, 그것은 나를 일인가했다 "모든 CPU"의 공간이었다. 감사. – jkindwall

+0

내가 곧 이야기 한 것처럼 보입니다. 빌드 정의에서 "모든 CPU"의 공간을 제거해 보았습니다. 빌드가 성공적으로보고되었지만, 더 자세히 보았을 때 빌드가 모두 작성되지 않았으며 "지정한 솔루션 구성이 유효하지 않습니다."라는 경고와 함께 종료되었습니다. "Any CPU"의 공간을 포함하는 각 프로젝트 파일에서 속성 그룹을 만들려고했으나 작동하지 않았습니다. – jkindwall

+0

다른 제안에 따라 특정 PropertyGroup 노드에서 MsDeployServiceUrl을 일반 PropertyGroup으로 이동하려고 시도했습니다. 그리고 이것은 초기 오류를 수정했지만 기능적으로는 MSBuild 인수에 넣는 것과 같습니다. 나는 여전히 각 프로젝트의 DeployIisAppPath를 지정하는 방법을 고집합니다. – jkindwall

0

한 브랜치에서 다른 브랜치로 병합 할 때이 문제점이있었습니다. 구성 정보는 솔루션 (.sln) 파일 안에 있습니다. 해당 파일을 열고 구성 정보가 올바른지 확인하십시오.

아래의 스크린 샷을 참조하십시오. PROD2에 대한 오류가 발생했습니다 | 모든 CPU가 올바르지 않습니다 (빌드 로그에 있음) PROD2 대신 모든 CPU가 나타났습니다. 솔루션 파일에 해당 행에 대한 모든 CPU 릴리스가있었습니다. 작은 변화와 모든 것이 잘되었습니다.

Configuration Information in the Solution file