2012-02-17 7 views
3

BizTalk 2009 프로젝트를 TFS 2010 팀 빌드의 일부로 빌드하려면 MSBuild exec 태스크를 사용하여 VS2008 devenv .exe처럼 ...VS2008을 사용하는 명령 줄에서 BizTalk 2009 솔루션을 빌드 할 때 .NET 런타임 오류가 발생합니다. devenv.exe

이것은 약 95 %의 시간 동안 제대로 작동합니다. 그러나 무작위로, 빌드는 로그에서 다음 오류와 함께 실패합니다. 당신이 CoreBiztalkBuildOutputLog.txt이 모든 것이 성공적으로 빌드를 보여줍니다 파일을 선택하면

Build FAILED. 
MSB3073: The command ""C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" "[path to my solution]" /Build "Release" /out "[path to my drop location]\CoreBiztalkBuildOutputLog.txt"" exited with code -2146233082. 

(나는 건물입니다 서비스의 이름을 생략 할 약간이 편집). 실패한 빌드에 대해이 로그를 비교하면 성공한 빌드와 동일합니다.

코드 -2146233082는 매우 설명 적이 지 않습니다. 따라서 빌드 머신의 이벤트 뷰어에서 실제 예외가 발견되었습니다.

Event Type: Error 
Event Source: .NET Runtime 
Event Category: None 
Event ID: 1023 
Date:  2/17/2012 
Time:  2:58:41 AM 
User:  N/A 
Computer: XXXXXXXX 
Description: 
.NET Runtime version 2.0.50727.3625 - Fatal Execution Engine Error (7A0BC59E) (80131506) 

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp. 

그물을 조금이라도 파고들이는 것은 이것이 어떤 종류의 CLR 오류임을 나타냅니다. 제안 된 솔루션은 .NET Framework를 다시 설치하고 \ 복구하는 것입니다. 이전에 사용했던 제작 기계가 내가 소유하고있는 한 여러 가지 문제가있는 7 살짜리 공룡 이었기 때문에 그것은 의미있는 것처럼 보였습니다. (~ 2 년)

Biztalk 2009 빌드를 실행하기 위해 새로운 VM을 프로비저닝 했으므로 기존 물리적 서버를 완전히 폐기 할 수있었습니다. 그러나 많은 어려움을 겪으면서 새 서버에서이 동일한 임의의 CLR 오류가 발생하는 시간은 약 5 %입니다.

나는이 문제가 .NET Framework에서 수정이 불가능한 일종의 결함이라고 생각합니다. 그러나 누군가가 어떤 아이디어라도 가지고 있다면 나는 모두 귀입니다. 이 $(BuildFlavor)Configuration 또는 당신이 가질 수있는 Architecture 특성 결정 여부를 당신의 예에서 분명하지 않다 때문에

<MSBuild Projects="$(BiztalkSolutionPath)" 
    Targets="Build" 
    Properties="Configuration=$(BuildFlavor);" /> 

:

+0

[MSBuild 작업] (http://msdn.microsoft.com/en-us/library/z7f65y0d%28v=vs.90) 대신 EXEC devenv.exe를 사용하여 솔루션을 빌드하는 특별한 이유가 있습니까? % 29.aspx)? – Filburt

+0

이전 BizTalk 관리자가 구현했기 때문에 100 % 확실하지 않습니다. 그러나 파이프 라인, 오케스트레이션 등으로 BizTalk 2009 솔루션을 구축하려면 Visual Studio를 사용하여 구축해야합니다. (당신은 devenv.exe에 exec'ing하여 Visual Studio 설치 프로젝트를 구축해야합니다.) –

+0

MSBuild 작업을 사용하여 솔루션이 아닌 BizTalk 프로젝트를 빌드하고 있으며 정상적으로 작동합니다. 내가 봤던 것에서 설정 프로젝트는 다른 무리 일 수 있습니다. – Filburt

답변

1

당신이 MSBuild에서 작업 시도를 부여하려면, 여기에 귀하의 예제에서 번역 작업의 필요에 따라 변경하십시오.

OutputPath은 프로젝트 레벨에서 설정됩니다. 개인적으로 MSBuild 태스크 출력 태스크 매개 변수를 사용하여 빌드 된 어셈블리를 가져옵니다. BizTalk에 배포 할 때 (BTSTask 사용) 원하는 디렉터리에 BizTalk 어셈블리를 복사 할 수 있으므로 빌드 작업에서 BizTalk 어셈블리를 신경 쓸 필요가 없습니다.

브라이언 (Bryan)은 BizTalk Deployment Framework을 살펴볼 가치가 있다고 제안했지만 달리 실행되는 솔루션을 버리는 것은 선택할 수있는 방법이 아닙니다.

+0

우리는 이미 BTDF를 사용하고 있습니다. 이 단계는 BTDF가 MSI 작성을 수행하기 전에 컴파일을 수행합니다. 저는 MSBuild 태스크를 사용하여 빌드를 호출하는 것에 익숙하지만 컴파일을 수행하기 위해 Visual Studio를 사용해야한다는 인상하에있었습니다. 그게 아니라면 (ppl이 여기에 게시하는 것에서 보듯이) 나는 이번 주에 총을 맞고 모든 것을 컴파일하는 MSBuild 작업이 제대로 작동하는지 확인합니다. –