2011-02-27 16 views
1

웹에 .NET COM 개체를 등록하는 모든 예에서 작업을 수행하는 데 "regasm"도구가 표시됩니다. 모두 그렇게하지 !!!
그러나 그것은 나를 위해 일한 적이 없어! 나는 그것을 극복하려고 노력하는 것에 지쳤다! 내 유일한 해결책은 C++에서 정의 할 수있는 함수가 필요한 regsvr32입니다.
제발 왜 그냥 작동하지 않을 것이라고 말해줘!regasm이 작동하지 않습니다.

내 컴퓨터 4 대와 3 대의 가상 컴퓨터 (Windows 7에서 2000까지) 모두에서 작동하지 않는다는 것을 고려하면 누구나 regasm 통화의 실례를 보여줄 수 있습니까? 나는 내가 바보라고 생각한다.

+0

'작동하지 않음'을 정의 할 수 있습니까? –

답변

8

[ComVisible] Regsvr32.exe로 .NET 어셈블리를 등록하는 것은 불가능합니다. Regsvr32에 필요한 필수 DllRegisterServer 진입 점이 없습니다. Regasm.exe 또는 설치 프로젝트에서 작동하게해야합니다. 후자는 서버를 다른 시스템에 배치 할 때 필요합니다.

오류 모드는 거의 없습니다. 기타 :

  • /codebase 옵션 사용을 잊어 버렸습니다. GAC에 어셈블리를 배포하지 않은 경우 필요합니다. 개발자 컴퓨터에서 수행하면 안됩니다.

  • 잘못된 버전의 Regasm.exe를 사용하십시오. 64 비트 시스템에는 두 가지가 있습니다. Framework64 디렉토리에는 클라이언트 코드가 64 비트 인 경우 사용해야하는 디렉토리가 들어 있습니다.

  • 상승되지 않은 명령 프롬프트에서 실행 중입니다. Regasm.exe는 레지스트리의 HKLM 하이브에 UAC가 적극적으로 방지하는 것을 작성합니다. 이것은 Vista와 Win7의 문제입니다.

어셈블리를 크게 잘못 만드는 것은 물론 가능합니다. 하나 이상의 인터페이스 및/또는 클래스를 작성하지 않는 것 [ComVisible].

+0

Visual C++ (.NET)에서 DLLRegisterServer를 수행 할 수 있으므로 regsvr32를 사용할 수 있습니다. 어쨌든,/codebase 옵션이 키가되어야합니다. – Vercas

+1

'/ codebase'가 답이되었습니다. 마침내 셸 프로그래밍으로가는 길을 마침내 열어 줘서 고맙습니다! – Vercas

0

그것의 수, 나는 그것이 어셈블리가 사본에 BUIT 된 .NET 프레임 워크의 버전에 의존하고

아래 코드를 붙여 발견 나는 전에이 문제를 가지고 있었고, 내가 cmd를 창에이 코드를 실행하며 근무
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe MyAssembly.dll 

효과가있는 경우 친절하게 투표하십시오.