2014-04-24 5 views
1

먼저이 프로젝트를 명령 줄을 통해 MSBuild를 사용하여 빌드하면 완벽하게 작동합니다.TFS Build가 MSDeploy 작업에서 bin/Debug 폴더를 찾을 수 없습니다.

내가 확인할 수 있었던 것은 소스 인수로 생성되는 contentPath이 TFS를 트리핑한다는 것입니다.

<Target Name="DeployRemote"> 
<Exec WorkingDirectory="$(MSDeployPath)" 
     Command="msdeploy.exe -verb:sync -  
     source:contentPath=&quot;$(MSBuildProjectDirectory)\bin\Debug\&quot;... 
</Target> 

TFS 오류 :

EXEC: FileOrFolderNotFound 
EXEC: Object of type 'contentPath' and path 
     'C:\a\src\MailChecker\MailChecker\bin\Debug\' cannot be created. 
EXEC: Could not find a part of the path '\\? 
     \C:\a\src\MailChecker\MailChecker\bin\Debug\'. 
EXEC: 1. 

참고 :이 대상은이 TFS가 사용하고있는 수 있을까 (초기에 csproj 파일에 주석)은 MSBuild의 포스트 빌드 타겟

내에서 호출됩니다 bin \ Debug와 다른 출력 디렉토리가 있습니까? 내 PROJ 파일의 출력 경로가 당신의 진짜 이름 인 경우 빈 \ 디버그 ..

답변

2

@The 머핀 남자

, 여기에 이유라고 확인했다.

TFS는 웹 사이트를 제외하고 모든 파일이 덤프되는 공통 bin 디렉토리에 내용을 출력합니다. _PLublishedWebsites 디렉토리에 있어야합니다.

프로젝트를 별도의 빌드 디렉터리에 덤프하려면 TFS 빌드 워크 플로를 구성해야합니다. 나는 TFS의 최신 버전이 더 쉽다고 믿지만, 소프트웨어를 빌드하기 위해 사용하는 TFS 워크 플로를 열고 편집해야 할 것입니다.

이것은 TFS 워크 플로를 체크인하고 실행하여 문제가 해결되었는지 확인해야하기 때문에 TFS Build의 불만스러운 측면입니다. GenerateProjectSpecificOutputFolder = 사실

Stackoverflow answer

:

내가 2012/당신이 당신의 빌드 정의/P에 msbuild를 인수를 전달하여이 동작을 제어 할 수 있습니다 .NET 4.5 TFS에서이

발견

TFS에 대한 전체적인 생각이 마음에 들긴하지만, MSBUILD를 사용하기 때문에 좀 더 성숙한 서버 (TEamCity, Go.cd, Jenkins)는 실제로이 점에서 훌륭하게 연마됩니다. 따라서 테스트 및 조정이 매우 쉽습니다. 결과는 개별 개발자 컴퓨터와 마찬가지로 빌드 서버에서 동일하게 나타납니다. /rant.