Microsoft MVP성태의 닷넷 이야기
DCOM COM+ 등록 관련 문의드립니다. [링크 복사], [링크+제목 복사]
조회: 8704
글쓴 사람
C#초보 (cyclon79 at naver.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

안녕하세요. 오래된 글에 질문을 드려도 될런지 모르곘네요.
regsvcs를 통해서 Com+로 등록을 하려고 하면 오류가 발생하고 있습니다.

다음 설치 오류가 발생했습니다.
1: 'd:\........\project.dll' 어셈블리를 로드하지 못했습니다.
2: 파일이나 어셈블리 '............project.dll' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다.

라고 나오고 있습니다.
서버에 COM+로 등록을 하고 사용을 하려고 합니다.
위에 설명하신 것처럼 ActivationOption.Server 로 변경도 했습니다.
다만 제가 적용하려고 하는 프로젝트가 C#과 C++ 둘다 사용하고 있으며 CLI로 연결되어 있습니다.
즉, C#에서 만든 DLL이 C++에서 만든 DLL을 참조하고 있기도 합니다.

원래는 이런 용도로 개발된 프로그램이 아닌데 요청으로 인해 DCOM등록을 해서 사용해야 하는 상황이 생겨서 알아보다가 여기까지 들어오게 되었네요.
단순하게 어셈블리서명만 추가해서 하면 될줄 알았는데 쉽지가 않네요.

어디를 놓쳤는지 뭘 더 해줘야 하는지 어떻게 해야 할지 막막하여 지푸라기라도 잡는 심정으로 문의드려봅니다.

감사합니다.


[연관 글]






[최초 등록일: ]
[최종 수정일: 11/13/2019]


비밀번호

댓글 작성자
 



2019-11-13 11시10분
그렇다면 아마도 C++/CLI DLL을 찾거나 로드하지 못해서 발생한 것 같습니다. 우선, x86/x64 문제가 아닌지 확인을 해보세요. x64 regsvcs로 등록을 시도했다면 C#은 AnyCPU로 되어 있는 경우 상관없지만 C++/CLI가 x86으로 되어 있다면 정상적으로 로드가 되지 않을 것입니다.

그래도 해결하지 못하신다면, 해당 현상이 재현되는 최소한의 C#, C++/CLI 프로젝트를 올려주시면 저도 regsvcs로 등록을 시도해 보겠습니다.
정성태
2019-11-13 12시55분
[ C#초보] 빌드는 Win32로 하고 있습니다. 재현되는 최소한의 프로젝트를 올려드리고 싶은데 큰 프로젝트라서 나누기가 쉽지가 않네요..ㅠㅜ
우선 말씀하신대로 x64 regsvcs랑 x32 regsvcs 둘다 다시 한번 해보겠습니다. anycpu로 되어있는건 없는듯 합니다.
[guest]
2019-11-13 01시29분
그렇다면 fuslogvw.exe 설정을 해서 어떤 식으로 DLL이 찾아지는지 한번 조사해 보세요.

Fuslogvw.exe (Assembly Binding Log Viewer)
; https://docs.microsoft.com/ko-kr/dotnet/framework/tools/fuslogvw-exe-assembly-binding-log-viewer

운이 좋다면 저 로그에 원인이 나올 것입니다.
정성태
2019-11-13 01시49분
[ C#초보] 이야~ 정말 감사합니다.
일단 x64용으로 regsvcs를 사용하고 있었더군요.
x32용으로 하니까 뭔가 되는듯 합니다.
그런데 또다시 문제가 발생하네요.
한번에 되면 좋으련만...ㅠㅜ 스무고개 금지라 하셨는데..ㅠㅜ 죄송합니다.

경고: 어셈블리에서 ServicedComponent 파생 클래스를 찾을 수 없습니다.
RegAsm을 사용하여 ComVisible 형식을 등록하십시오.

라고 나오네요.

RegAsm Project.dll 을 해 보고 난 다음에 했는데도 동일하게 나오고 있습니다.

혹시 다시 도움이 될 만한 견해가 있으신가요?

아. 그리고 Fuslogvw.exe는 정말 신기하더군요. 도움이 많이 될듯 합니다.
[guest]
2019-11-13 04시05분
그 메시지는 말 그대로, 만드신 C# DLL에서 ServicedComponent를 상속한 클래스가 없다는 건데요. 있나요? 아래의 글에 작성한 예제 코드대로 class를 만들었는지 확인해 보세요.

regsvcs.exe 로 어셈블리 등록 시 시스템 변경 사항
; http://www.sysnet.pe.kr/2/0/1289
정성태
2019-11-14 11시05분
[C#초보] 덕분에 한단계 한단계 길이 보이고 있는듯 합니다. ㅠㅜ 혼자 너무 삽질을 했네요.
말씀하셨듯이, ServicedComponent를 상속받도록 해 주었습니다.
그랬더니 또 문제가...

어셈블리에 잘못된 ServicedComponent 파생 클래스가 있습니다.
클래스는 public이고 abstract가 아니어야 하며, public 기본 생성자를 사용하고 다른 모든 ComVisibility 요구 사항에 맞아야 합니다.

라고 나옵니다.
찾아보니 ComVisibility를 true로 해 줘야 한다고 해서 assamblyinfo.cs 쪽에 [assembly: ComVisible(true)]로 변경을 해 주었습니다.
그런데도 위와같은 오류 메시지가 나오고 있네요. ㅠㅜ

계속적인 질문에 죄송스럽습니다만 의견 있으시면 조언 부탁드립니다.
[guest]
2019-11-14 03시30분
일단 쉽게 가는 것이 좋을 것 같은데요. 아래의 글에 포함한 예제 코드로 실습을 해보세요.

regsvcs.exe로 어셈블리 등록 시 시스템 변경 사항
; http://www.sysnet.pe.kr/2/0/1289

저 예제가 잘 등록이 되었다면 이후 자신의 코드와 비교해 뭐가 틀렸는지 보면 되지 않을까요?
정성태

1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5906guest4/21/20233387Dispatcher 서비스 구현 질문 [1]
5905guest4/20/20233687tabControl의 tabPage가 여러 개일 때 순서를 바꾸기가 까다롭네요 [5]
5904guest4/18/20233622[신규자료첨부] DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [4]파일 다운로드1
5903guest4/18/20233095fileSystemWatcher 이벤트 관련 질문입니다 [2]
5902guest4/17/20233703c#으로 USB 관련 질문 [2]
5901guest4/17/20233288내솔루션 판매 시 1.0.0.0 폴더와 Sqlite 배포 [5]
5900guest4/17/20234453DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [2]파일 다운로드1
5899guest4/17/20233395Dictionary와 Linq [4]
5898차가워4/17/20233206CNTK 교육 문의 [1]
5897guest4/17/20233140Socket스레드와 UI thread [4]
5896HAN4/16/20233116c언어 return 에 대해 궁금한게 있어요. [1]파일 다운로드1
5895guest4/15/20232874Drag and Drop - 모든 컨트롤 [2]
5894송부장4/14/20234261[질문] Visual Studio 2022에서 '도구 상자 항목 선택'의 'COM 구성 요소' 탭에서 ActiveX 목록이 보이지 않습니다. [3]파일 다운로드2
5893감사합니...4/14/20232897오라클 OLEDB방식 접속 후 SELECT 'TEST' TEST_VALUE FROM DUAL의 값이 이상합니다. [1]
5892한무4/14/20233090C# 으로 백그라운드에서 워드를 실행하여 매크로 실행이 가능 할까요? [2]
5891리세4/14/20232991안녕하세요.C# 서버프로그램에서의 Mysql 쿼리문제(다중쿼리 실행)에 대해 문의드립니다. [2]
5890guest4/14/20233622C# 프리랜서로 돈 벌려면 성태님 책 마스터하면 되나요? [6]
5889전예찬4/14/20232829C# 파일 복사 관련 질문 드립니다. [3]
5888정경구4/12/20233110C# 첫 환경 세팅과 관련해서 [4]
5887HAN4/12/20232742안녕하세요 파이썬도 공유 가능 할까요? [1]
5886guest4/11/20233136필요한 어셈블리만 다운로드 및 재로딩하는 방법에 관하여 [2]
5885guest4/11/20232981c#으로 드림위버같은 거 만들어볼려는데요 [6]
5884궁금이4/11/20232858부모 클래스에서 예외 발생시 힙 영역에 할당 ? [2]
5883코딩초짜4/9/2023274410c언어 usleep 에 대해서 요 [2]
5882조은현4/7/20232811선생님 안녕하세요! wpf의 성능 개선에 대해서 질문드려요! [1]파일 다운로드1
5881guest4/6/20232932static method - <에러메시지 Extension method must be defined in a non-generic static class> [4]
1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...