ひどいタイトルでごめんなさい。
Executable.exe などの別のアセンブリの依存関係である署名済みアセンブリ 'Signed.dll' があります。
Signed.dll は COM DLL を参照し、この COM DLL の型の 1 つ「ComPublicT」を公開します。
Executable.exe は、元の COM DLL への参照を追加するのではなく、Signed プロジェクトから自動的に生成された Interop.COM.dll を参照する必要があります。
エラーは、2 つの異なる COM 相互運用アセンブリの 2 つの異なる ComPublicT 型の間で型が一致しないことです。
これは、Signed.dll が署名されている場合にのみ必要です。
ComPublicT を模倣する型を作成する以外に、Executable が Signed の COM 相互運用アセンブリではなく COM DLL を参照できるようにするにはどうすればよいですか?
なぜこれが起こるのですか?
編集、これは多少異なる内訳です:
署名されたプロジェクトは COM.dll を参照し、COM.dll から型をパブリックに公開します。この参照を Visual Studio に追加すると、自動的に Interop.COM.dll が作成されます。
実行可能参照と署名済みプロジェクトに依存 通常、COM.dll への参照を追加でき、すべて問題ありません。
Signed は署名されているため、Signed から公開されている Interop.COM.dll の型は、コンパイラからは Executable の Interop.COM.dll から公開されている型と同じには見えません。
実行可能ファイルは、脆弱に感じられる Signed の Interop.COM.dll を手動で参照する必要があります。