[注:最終的に、このスレッドでKarel Zikmundからヒントを得ました。これは、謎を解くのに役立ちました。ここに返信を貼り付けます-より良いものにするために]。
そこで、次の行を使用して、アセンブリにサインオンインポートしました。
tlbimp C:\ WINDOWS \ system32 \ msi.dll /out:Interop.WindowsInstaller.dll /keyfile:MyKey.snk
次に、ファイルを適切な場所にコピーしてプロジェクトをビルドしましたが、次のエラーでビルドが失敗するたびに、アセンブリの生成に失敗しました-参照されるアセンブリ'Interop.WindowsInstaller'には厳密な名前がありません。
問題はtlbimp行にあると思いましたが、Karel Zikmundの応答を読み、DLLに厳密な名前が付けられていることを確認した後(sn -vf Interop.WindowsInstallerを使用)、問題を発見しました。
「MicrosoftWindowsインストーラオブジェクトライブラリ」への参照を追加すると、COMオブジェクトは実際にコードブロックを.csprojファイルに配置しました。気づかなかったのですが、このブロックにより、プロジェクトがビルドされるたびにDLLファイルが最初から再生成されました。もちろん、生成されたファイルには、もはや厳密な名前は付けられていません。
私が解決した方法は、プロジェクトから「Microsoft Windowsインストーラオブジェクトライブラリ」への参照を削除し、インポートされた(そしてすでに署名された)Interop.WindowsInstaller.dllファイルへの直接ファイル参照を追加することでした。