2011-02-17 7 views
0

이봐, 네가 잘못된 것을 볼 수 있었는지 궁금해서/해결책을 제안했다.COM을위한 어셈블리 등록, dev 컴퓨터에서만 작동

나는 C#으로 빌드 한 COM 용 DLL 어셈블리가 있으며 Silverlight Out-of-Browser에서 COM 개체를 가져 오려고합니다. siverlight 응용 프로그램을 컴퓨터간에 이동할 수있게하려면 어셈블리를 등록하려면 다음을 수행하는 일괄 설치 관리자와 함께 zip에 모든 필수 파일을 넣으십시오.

cd % windir % \ Microsoft.NET \ Framework \ v4 .0.30319 \ 는 RegAsm.exe "% USERPROFILE % \ 내 문서 \ 숙제 시계 \ windowsHook.dll"/ TLB/NOLOGO

내 응용 프로그램 어셈블리를 찾아 내 dev에 컴퓨터에서 잘 작동하지만

내 응용 프로그램을 이동할 때 (dll 및 기타 필요한 파일과 함께) 테스트 컴퓨터에 내 배치 파일을 성공적으로 등록하지만 응용 프로그램이 찾지 못한다고합니다.

그러나 테스트 컴퓨터에서 C#을 사용하여 어셈블리를 다시 빌드하고 dev 컴퓨터에서 옮긴 dll로 옮긴 dll을 교체하면 응용 프로그램에서 문제가 없습니다. 그들이 내 응용 프로그램을 사용하고자한다면 C#을 사용하여 어셈블리를 다시 빌드 할 필요가 없다면 고객에게 편리 할 것입니다. 따라서이 문제를 해결할 수있는 방법이 있는지 궁금합니다.

나는이 문제를 잠시 들여다 보았고, 내 어셈블리가 강력한 어셈블리가 아니었기 때문에 생각했다. C#이 자동으로 그렇게한다고 생각했기 때문에, 나는 배치 파일에서 그것을 시도했다. 어셈블리에 강력한 이름을 부여하기 위해 암호화 키를 생성하는 데 필요한 'al'및 'sn'명령을 인식하고 C# 프로젝트 속성의'서명'탭에서이 작업을 시도했지만 동일한 문제가 발생했습니다. 어떤 아이디어가 이것을 고치는 방법?

답변

1

VS를 사용하여 다시 빌드 할 때 작동하는 이유는 Regasm.exe가/codebase 옵션과 함께 실행되기 때문입니다. 조립품을 GAC에 넣지 않으려는 경우 필요합니다.

+0

감사합니다. 전에 코드베이스를 시도했을 때 올바른 DLL이 없지만 "모든 유형이 성공적으로 등록되었습니다"라는 메시지가 나타나고 작동합니다! 감사 :) – Austin

0

C 번호가 자동으로 어셈블리에 강력한 이름을 제공하지 않습니다 사전에

감사합니다. Visual Studio를 사용하는 경우 프로젝트의 속성 페이지를 열고 서명 탭을 확인하십시오. 어셈블리 서명을 선택하고 새로운 강력한 이름 키 파일을 생성하십시오. 프로젝트를 빌드하면 기존 배치 파일로 수행해야 할 작업을 수행 할 수 있습니다.

+0

덕분에 dll이 강하게 명명되었으므로 배치 파일 명령을 사용해야한다고 생각했습니다. D – Austin

+0

어셈블리를 GAC에 넣으려고하지 않을 경우 강력한 이름은 필요하지 않습니다. – sharptooth

관련 문제