티스토리 뷰
C# COM 배포
배포 설치 파일을 만드는 방법(InstallShiled)은 모른다.
수동으로 등록 방법 이다.
1. COM 컴포넌트를 설치할 PC에 .NET Framework 이 설치되지 않았으면 Microsoft 에서 다운로드하여 설치한다. (.NET Framework 최신 버전이 하위 호환 안되어 하위 버전을 다운로드 해야할 경우도 있다)
https://www.microsoft.com/net/download/windows
아래 그림에서 .NET Framework(노란색)을 클릭해서 다운로드해서 설치한다.
.NET Framework 설치된 버전 확인은 윈도우10 기준으로 아래 그림과 같이 이미 v1~v4 까지 설치 되어 있었다.
2. 등록할 _COMTest.dll 파일을 원하는 폴더 c:\data\com+ 에 복사한다.
만액 COM 컴포넌트가 참조하는 다른 dll 파일이 있으면 그 dll 도 같이 복사해야 할듯...
3. 설치된 .NET Framework 최종 버전인 v4 폴더에서 Regasm 명령을 실행해서 등록한다. (관리자 권한으로 실행 - 만약, 64비트 COM이면 .NET폴더도 64비트로 이동해서 등록한다)
C:\Windows\Microsoft.NET\Framework\v4.0.30319\REGASM _COMTest.dll
64비트용 COM 배포는 맨 아래 그림 참조. (.NET Framework 64bit 에서 COM등록해야 한다)
C# COM을 REGASM 으로 등록하면 CCW(proxy) 가 만들어진다.
CCW(COM Callable Wrapper) : C# COM에 MFC(비관리언어)가 CCW Proxy 를 통해 접근한다.
참고>
TLB 파일 만들기> TLBEXP _COMTest.dll /out:_COMTest.tlb
등록> REGASM /tlb:_COMTest.tlb _COMTest.dll
등록할때 tlb 파일이 필요하다. (구 버전에서는 필요했나 봄, 지금은 위 그림처럼 /tlb 옵션 지정 없이도 등록되었다.)
등록확인> iLDASM _COMTest.dll
VisualStudio2017 설치된 PC에서는C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools 폴더에 iLDASM.exe 파일이 있으나 설치되지 않은 PC에는 폴더가 없음.
4. 등록한 COM 이 동작되는지 2번 그림에서 _COMTestClient.exe 를 실행하여 원하는 결과가 나오는지 확인한다.
주의>
COM을 참조하는 Client가 MFC 인 경우 COM dll 이 있는 폴더(2번 그림인 경우 c:\data\com+)에 MFC 실행 파일 모두 복사해야만 MFC Client 프로그램이 C# COM 호출이 가능했다. 만약, C# COM dll 과 MFC 실햎파일이 서로 다른 폴더에 있으면 COM 연결 시 오류 발생한다.
C# COM dll 이 참조하는 모든 dll 도 같은 폴더에 있어야 한다. C# COM dll 이 있는 Release 폴더에 있는 모든 파일을 복사하는게 속편할듯 함.
위 그림은 VisualStudio2017 에서 C# COM dll 이 만들어진 Release 폴더의 파일 목록이다. pdb, tlb 파일을 빼고 나머지 파일 모두 C# COM dll을 배포할 PC에 복사해야 한다.
결론은
아래 그림처럼 C# COM dll 과 COM 이 참조하는 dll 그리고, COM 참조하는 Client 프로그램, Client 가 참조하는 dll 이 모두 한 폴더 안에 있어야 했다.
출처: http://petra.tistory.com/1140 [Free, Freedom]
64비트 C# COM 등록