2013-06-27 5 views
2

.NET 4.0에서 32 비트 COM 개체를 만들려고합니다. COM 개체의 소비자는 간단한 JScript입니다.Visual Studio에서 COM Interop 옵션을 등록하는 작동하지만 Regasm 직접 호출하지 않습니다

Visual Studio의 "COM interop에 등록"설정에 대해 확인란을 true로 설정하면 모든 것이 정상적으로 작동합니다. 내 JScript에서 COM 개체를 만들고 모든 테스트 코드를 실행할 수 있습니다.

그러나 Visual Studio가없는 32 비트 시스템 (.NET 4.0을 실행 중입니다)에 배포 할 수 있기를 원합니다.

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm ComTest.dll /codebase /tlb:ComTest.tlb 

는 32 비트 어셈블리의 때, 나는 32 비트 regasm.exe을 사용 돌보는 해요 : 그래서 DLL을 등록하는 간단한 install.bat 파일이 있습니다. 이것은 성공적으로 등록되었음을 알려줍니다. /codebase 옵션을 사용하여 기존 네임 스페이스를 스테핑 할 수 있다는 경고 메시지가 표시되지만 배포 환경에서는 문제가되지 않습니다.

하지만 내 JScript를 내 개체를 만드는 데 갈 때 지금은 뭔가 내가 부족 것을 그렇게되는 특별한 비주얼 스튜디오 올바르게 등록 있어요

Could not create object named "COMTest". 

있습니까

거야?

가능한 경우 어셈블리에 서명하지 않아도됩니다.

답변

2

문제점을 발견했습니다. (물론 내가 게시 한 이후에만 ...)

개체가 잘 등록되었습니다. 문제는 COM 개체의 생성자에서 누락 된 종속성 때문이었습니다.

초기화 코드를 생성자 밖으로 이동하고 Initialize() 메서드로 이동하면 문제가 노출됩니다.

Visual Studio가 실행중인 디렉터리 때문에 Visual Studio가 작동했습니다.