끔찍한 제목에 대해 사과드립니다.COM DLL을 참조하는 서명 된 어셈블리 종속성은 종속성의 생성 된 interop 어셈블리를 참조해야합니다.
다른 어셈블리의 종속성 인 Signed.dll 'Signed.dll'이 있습니다 (예 : Executable.exe).
Signed.dll은 COM DLL을 참조하고이 COM DLL 유형 중 하나를 공개적으로 노출합니다. 'ComPublicT.'
Executable.exe는 원래 COM DLL에 대한 참조를 추가하는 대신 Signed 프로젝트에서 자동 생성 된 Interop.COM.dll을 참조해야합니다.
이 오류는 두 개의 서로 다른 COM interop 어셈블리의 서로 다른 두 가지 ComPublicT 형식 간의 형식 불일치입니다.
Signed.dll에 서명 된 경우에만 필요합니다.
ComPublicT를 모방 한 형식을 만드는 것 외에 Executable이 COM DLL을 COM DLL 대신 참조 할 수있게하려면 어떻게해야합니까?
왜 이런 일이 발생합니까?
편집, 여기에 약간 다른 고장입니다 : 프로젝트 서명
이 COM.dll를 참조하고, 공개적으로 Interop.COM.dll
이 Visual Studio에서 참조 자동으로 생성을 추가하기 COM.dll 에서 유형을 노출실행 가능한 참조 및 서명 된 프로젝트에 따라 달라집니다. 일반적으로 COM.dll에 대한 참조를 추가 할 수 있으며 모두 정상입니다. 서명 서명 때문에, 서명에서 공개적으로 노출 Interop.COM.dll 유형이 실행 파일의 Interop.COM.dll
실행에서 공개적으로 노출 유형과 동일하게 컴파일러에 의해 볼 수 없습니다
수동의 서명 참조해야합니다 깨지기 쉬운 Interop.COM.dll.
Signed.dll에서 사용하는 interop을 어떻게 생성합니까? Signed.dll은 잘 서명되었으므로 .snk 키 파일을 제공 할 수 있도록 수동으로 작성해야합니다. –
Visual Studio에서 COM 참조를 프로젝트에 추가하면 COM interop 어셈블리가 자동으로 생성됩니다. COM.dll은 Interop.COM을 생성합니다.dll과 obj 및 bin 폴더에 배치됩니다. –
문제는 생성 된 Interop 어셈블리가 서명되지 않은 것입니다. – NPehrsson