2012-04-17 5 views
7

우리는 spicIE 기반의 IE 용 플러그인을 가지고 있는데, 그 목적은 일부 외부 장치에 연결하는 것입니다.RegAsm은 실제로 무엇을합니까? 파일은 어디에 복사됩니까?

외부 장치에 연결하기 위해 다른 회사에서 토큰 & DLL을 개발했습니다. 토큰으로 인증을 수행하려면 ActiveX 및 DLL이 필요합니다.

문제는 우리가 IE 용으로 개발 한 플러그인으로, 마지막 부분에 RegAsm을 실행하고 DLL을 등록한 후 해당 플러그인 (또는 변경 사항)을 IE에서 볼 수있는 install.bat 파일이 있다는 것입니다.

IE에서 플러그인을 실행할 때 우리 코드는 인증 (이름은 x.dll)에 필요한 DLL을 찾을 수 없습니다. 등록 된 DLL은 어디에 복사됩니까? 정말로 복사 되었습니까? 내 플러그인의 DLL이있는 폴더에 x.dll이 있어야합니다.

답변

6

간단히 말해 RegAsm은 .NET 어셈블리를 COM에서 볼 수 있도록 등록합니다. MSDN에서 : 클래스가 등록되면 모든 COM 클라이언트는 클래스가 COM 클래스 인 것처럼 사용할 수 있습니다. 클래스는 어셈블리가 설치 될 때 한 번만 등록됩니다. 어셈블리에있는 클래스의 인스턴스는 실제로 등록 될 때까지 COM에서 만들 수 없습니다.

ActiveX에서 코드를 보지 않고도 올바르게 이해하면 ActiveX가 일부 COM DLL에 종속되어 있기 때문에 .NET DLL에 대해 RegAsm을 실행하고있는 것입니다.

RegDllView을 실행하여 세부 정보를 찾은 다음 실제로 등록 된 개체를 실제로 인스턴스화하고 있는지 확인하십시오.

또한 문제가 계속되면 VB6/Visual Studio 2010 등의 개체를 인스턴스화하거나 초기 바인딩을 사용하여 문제가 있는지 확인하십시오. 인스턴스화시 오류를 검사하십시오.

+0

상황이 반대로, 관리되는 코드에서 com/activex 구성 요소를 인스턴스화해야합니다. 관리되는 코드에서 com/activex 구성 요소를 찾을 수 없습니다. –

+1

Ahh ok. 이들이 고전적인 COM 구성 요소라면 regsvr32를 수행해야합니다. 그런 다음 COM 탭 아래의 VS .NET 프로젝트에 참조를 추가하고 인스턴스화 할 수 있어야합니다. VS는 형식 매핑 등의 측면에서 백그라운드에서 당신을 위해 모든 노력을 다하고 있습니다. – AshesToAshes

+1

또한 여기에 좋은 정보가 있습니다 : http://stackoverflow.com/questions/635839/best-way-to- access-com-objects-from-c-sharp를 사용하면 시작하는 데 도움이됩니다. 다시 말하지만, 인스턴스화하고 HRESULT/catch를 검사 해보십시오. – AshesToAshes