TFS TeamBuild를 빌드하려면 C #> VB6> C # 응용 프로그램 (COMREFERENCE PROB?)

StackOverflow https://stackoverflow.com//questions/10700607

  •  13-12-2019
  •  | 
  •  

문제

TFS 팀을 확실하게 WPF C # 앱을 구축하기 위해 빌드를 시도합니다. 이 응용 프로그램은 유지 관리하는 vb6lib.dll에 의존합니다.이 vb6lib.dll 자체는 우리가 유지하는 다른 C # libs에 의존합니다.

명령 빌드 정의를 설정합니다 (순서대로) :

  • vbdependencies.sln (이 모든 libs는 COM interop 세트가 있으므로 VB6이 TLBS를 찾을 수 있습니다)
  • buildvb6lib.proj (vb6lib.dll 출력을 C로 복사 한이 스크립트의 일부로 빌드 서버의 vblib.dll을 호출하는 msbuild 파일을 호출하는 msbuild 파일) \ tmp)
  • mainapp.sln (작업 공간에서는 C : \ tmp \ vb6lib.dll에 대한 참조를 추가했습니다)

이 소리가납니다 ~을 빼앗아가는 것 내 dev 노트북에서 나는 보통 VB6을 빌드하고, 출력을 \ tmp로 복사 한 다음, C # 솔루션에 그것에 대한 참조를 추가하기 전에 regsvr32 regsvr32. 제 빌드가 빌드하고있는 것으로 확신하지 못하는 것은이 단계입니다.

또한 VB6 빌드에서보다 유용한 출력을 얻을 수있는 방법이 있습니다. 현재 "파일에서 컴파일 오류"XXX.BAS '는'라이브러리 프로젝트를 찾을 수 있지만 실제 라이브러리가 찾을 수없는 실제 라이브러리가 없습니다. .

환호

도움이 되었습니까?

해결책

개발 시스템의 빌드 프로세스의 중요한 지점이 COM 개체를 등록하는 데 있음을 정확합니다.그러나 일반적으로 잘못된 COM 오브젝트가 등록되거나 등록이 실패 할 때 모든 종류의 버전 관리 문제와 자동 실패를 일으킬 수 있으므로 일반적으로 COM 객체를 등록 할 수 있습니다.

이를 수행하는 올바른 방법은 interop 어셈블리를 수동으로 생성하고 COM 객체 대신 참조를 참조하는 것입니다.이것은 TLBIMP 유틸리티로 수행됩니다 (예 :

)
tlbimp ..\Libraries\VBLib.dll /out:..\Libraries\Interop.VBLib.dll
.

개발 시스템에서 해당 명령을 실행 한 다음 vb6lib.dll에 대한 참조를 제거하고 interop.vblib.dll에 대한 참조를 추가하십시오.그런 다음 interop 어셈블리가 항상 올바른 버전에서 빌드되도록 TLBIMP 명령을 참조 프로젝트의 사전 빌드 이벤트로 추가 할 수 있으며 빌드 시스템에 COM 오브젝트를 등록 할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top