나는 여기에서 뭔가를 간과했으면 좋겠다. 그러나 나는 행복하게 해결할 수없는 문제에 부딪혔다.펑 토이 드가 GAC에 있어야합니까?
CI 솔루션에 VSTS를 사용하고 있습니다. 각 커밋은 BizTalk 응용 프로그램을 전용 빌드 서버로 가져 와서 컴파일하고 단위 테스트가 실행됩니다.
Visual Studio가 프로젝트 참조가 아닌 컴파일로 컴파일되기 때문에 내 BizTalk 솔루션 어셈블리를 빌드 서버의 GAC로 가져 오는 것을 원하지 않습니다.
Functoid not found: guid (1d5de785-c639-4040-9704-c65a11127115) with functoid id (6003). Check if the assembly implementing this functoid is present in D:\Program Files (x86)\Microsoft BizTalk Server 2013 R2\Developer Tools\Mapper Extensions. If the functoid does not expose any inline code, make sure its assembly is made available in the GAC also
그래서, 펑 토이 어셈블리가 GAC에 있어야합니다 :
문제는 빌드 에이전트가 사용자 지정 펑 토이 프로젝트, 나는 다음과 같은 오류를 포함하는 솔루션을 구축하려고 할 때 온다? 문제는, common.components 어셈블리를 참조하는 것인데, 이는 또한 GAC가 될 필요가 있다는 것을 의미합니다. 이것은 내가 원하지 않는 곳으로 바로 돌아 가게합니다! 이는 다음 번에 빌드 에이전트가 common.components에 대한 참조를 사용하여 프로젝트를 빌드하려고 할 때 GAC에서 실행되는 "이전"버전을 사용하기 때문에 오히려 최신 버전을 가져온 것이므로 repo와 같은 솔루션에서 종속 프로젝트 옆에 앉았습니다.
다른 사람이 같은 문제에 부딪혔다면, 저는 여러분의 의견을 듣고 싶습니다.
call "$(DevEnvDir)..\tools\vsvars32.bat"
gacutil.exe /if "$(TargetPath)"
내가 $(DevEnvDir)
비록 빌드 서버에 해결되지 않습니다 꽤 확신 :
내가 올바른 해결책이 곳의 모든 BizTalk 응용 프로그램 관련 어셈블리가해야되는 GAC를 업데이트하는 것입니다 말을하려고 해요 :
나는하여 Common.Components 프로젝트에 대한 포스트 빌드 이벤트로 다음을 추가 항상 그렇습니다. 그것이 작동하는 방법입니다. "BizTalk 프로젝트가 프로젝트 참조가 아닌 .NET 참조를 사용하는 것 같습니다 .Net이 어셈블리를 해결하는 방법입니다. BizTalk와 관련이 없습니다. –@ Johns-305 답변 주셔서 감사합니다. 어셈블리 해상도가 BizTalk (https://msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.110).aspx)와 아무런 관련이 없음을 동의합니다.그러나 GAC에 있어야하는 펑 토이 드 (functoids)가이 문제의 원인입니다. 사용자 정의 펑 토이도없고 문제 없습니다! common.components가 GAC에 있으면 커밋이 자동 빌드를 트리거 할 때마다 빌드 서버에서 "이전"버전이 참조됩니다. 빌드 에이전트는 원격 Repo에서 common.components에 대한 최신 코드를 가져 오지만 종속 프로젝트는 GAC에있는 모든 버전을 사용하여 빌드됩니다. –
미안하지만 여전히 문제가 발생하지 않습니다. 빌드는 필요한 모든 것을 갱신해야합니다. GAC에는 '구식'버전이 없어야합니다. 또한 빌드 타임에 자연스럽게 또는 특정 빌드 단계로 업데이트해야합니다. –