2017-09-16 1 views
1

OCX를 사용하는 레거시 프로젝트가 있습니다. regsvr32를 사용하여 시스템에 OCX를 등록해야했습니다. 젠킨스는 프로젝트를 컴파일하는등록하지 않고 ActiveX에 종속 된 C# WinForm 컴파일

지금, 나는 원한다. 불행히도 Jenkins Server에는 OCX가 없으므로 등록하고 싶지 않습니다.

그래서이 프로젝트는 젠킨스에 컴파일 할 수있는 OCX를 배포 할 수있는 방법이 있습니까? 등록이 필요없는 구성 요소에 대해서는 읽었지만 런타임 요구 사항을 대상으로하는 것으로 보입니다. 문제는 컴파일 할 때입니다.

+0

아마 당신은 https://docs.microsoft.com/en-us/dotnet/framework/interop/how-to-generate-primary-interop-assemblies-using ([Tlbimp.exe를]를 사용하여 주 interop 어셈블리를 생성 할 수 있습니다 -tlbimp-exe) 및 참조를 업데이트하여 어셈블리를 사용합니다. [this post] (https://stackoverflow.com/q/10700607/3110834) 또는 [this one] (https://stackoverflow.com/q/7498258/3110834)을보십시오. –

+0

Jenkins는 C# 프로그래머의 삶을 가능한 한 힘들게 만드는 것을 목표로 Java 커뮤니티에서 출시 한 바이러스로 나를 때로는 공격합니다. 폼에서 사용하는 interop 라이브러리와 AxHost 래퍼를 모두 얻을 수 있도록 Aximp.exe를 실행해야합니다. 두 DLL을 소스 제어로 확인하십시오. 프로젝트에서 두 개의 참조를 제거하고 파일을 사용하여 다시 추가하십시오. .csproj에 더 이상 두 개의 'COMReference' 요소가 없다는 것을 확인하여 다시 확인하십시오. 설치 관리자 나 ocx를 소스 컨트롤로 점검하는 것이 좋을 것입니다. –

답변

1

예 - 레자 Aghaei 말한대로 그것을 할 수있는 방법입니다.

통화 tlbimp는 (그것이 주 interop 어셈블리 일 필요는 없습니다) interop 어셈블리를 생성합니다. 그런 다음 프로젝트에서 ocx를 참조하는 대신 interop dll을 참조합니다. 프로젝트를 실행하거나 윈폼 디자이너에서 컨트롤을 사용하려면 여전히 OCX를 등록해야한다는 점

참고. 젠킨스 (Jenkins)에서 빌드하기 위해 빌드하십시오.이 방법을 사용하여 레거시 코드를 빌드 할 수 있습니다.

관련 문제