私は長い間この問題を解決しようとしてきましたが、何も動作していないようです。.NETプロジェクトでvb6 dll参照にReg-Free COMを使用するにはどうすればよいですか?
私はvb6で書かれたCOM DLLを持っています。私はこのDLLへの参照を 'isolated'と 'copy local'プロパティをtrueに設定して.netで.netに追加します。どうやらこれはregフリーのcomを有効にするはずです。
しかし、動作しません。別のコンピュータで試してみるか、regsvr32でDLLを登録解除すると、DLLにアクセスしようとすると例外がスローされます(基本的には希望のcomクラスは存在しません)。 DLLとマニフェストファイルは、EXEと同じフォルダにありますが、明らかにそれらを完全に無視します。
私は間違っていますか?私はこれについての散らばった記事のトンを読んだが、それらのどれも私に実用的な解決策を与えていない。私はビジュアルスタジオを使って無駄にしました。私はmake-my-manifestを使って少々修正しましたが、(テストプロジェクトでさえ)うまく動作しませんでした。
これは、非uiスレッドがデフォルトでMTA対STAスレッドとして作成されるという事実に関連しているかどうかを知りましたか? –
いいえ、私はすべてのCOM呼び出しがUIスレッドから来たことを確認することで問題を回避しました。私はこの問題をMicrosoftに報告し、そこにいる誰かがテストdllの問題を修正した例を挙げましたが、この問題は修正するほど優先順位が高いとは言えませんでした。 –
Strilancのディスカッションへのリンク:https://connect.microsoft.com/VisualStudio/feedback/details/457217/reg-free-com-fails-when-threaded#tabs – tofutim