Microsoft Shell Control And Automationアプリケーションは、次の場所にあるCOM 参照を使用する必要があります。C:\Windows\system32\shell32.dll
しかし、その参照を追加した後、VS 2010Interop.Shell32.DLLはターゲット ビルド ディレクトリに dll を追加しました。すべて正常に動作しています。ただし、MSI セットアップ ウィザード プロジェクトをビルドする場合。shell32.dll依存関係として追加します。よし、問題ない。
ただし、インストール時に、ターゲット インストール ディレクトリにもコピーshell32.dllされInterop.Shell32.DLLます。アプリケーションを実行すると、奇妙なエラーが表示されます。shell32しかし、インストール ディレクトリから手動で削除すると、すべて正常に動作します。
MSI がshell32.dllインストール ディレクトリにコピーしているのはなぜですか? 64 ビット OS には必要ですか? はいの場合、なぜInterop.Shell32.DLLですか?私のアプリでshell32.dllは問題があるようですが、コピーされないようにする方法はありますか?
編集:
セットアップ プロジェクトから除外shell32.dllしましたが、64bit OS では問題になりますか?
Edit2:
shell32.dllatC:\Windows\system32\は実際には 5KB ですが、MSI は 11 MB をコピーします。それは何ですか ?