1

次の設定があります。メインの実行可能ファイルによって公開されているIPluginインターフェイス。メインの実行可能ファイル(およびプラグイン)は、リムーバブルドライブにあります。

プラグインディレクトリ内のすべてのdllを読み込もうとしています。

For Each Type As Type In asm.GetTypes()
     Trace(Type.ToString())
     If GetType(IPlugin).IsAssignableFrom(Type) Then
         loadedPlugin = asm.CreateInstance(Type.Namespace & "." & Type.Name)
     End If
Next

ただし、IPluginを実装する一致するクラスが見つからないようです。CreateInstanceを直接呼び出してクラスを強制的にロードしようとすると、ReflectionTypeLoadExceptionが発生します。

ただし、ローカルドライブでアプリケーションを実行すると、自動検出プロセスは問題なく機能します。

リムーバブル/ネットワークドライブ上の.NETアプリでセキュリティの問題が発生する可能性があることは知っていますが、セキュリティ例外はスローされません。.NETFramework4.0もインストールしています。

プラグインDLLは、プラグインインターフェイスの最新バージョンに対して構築されているため、バージョンの不一致ではないようです。

オペレーティングシステムはWindows7x64です。

GetType(IPlugin).AssemblyQualifiedName:App.IPlugin、MainApp、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null Type.GetInterface( "IPlugin")。AssemblyQualifiedName:App.IPlugin、MainApp、Version = 1.0.0.0、Culture =ニュートラル、PublicKeyToken = null

どちらも同じ結果になります。

回避策:プラグインアセンブリをローカルドライブにコピーすると、機能します。ただし、それはあまり良い解決策ではありません。たぶんもっと良いものが出てくるでしょう。

私が指摘しなければならないもう1つのことは、.NETアプリケーションは主にプラグイン自体であり、VB6アプリケーションによってネイティブに呼び出されていることです。

誰かが私を助けることができますか?

どうもありがとうございます :)

4

1 に答える 1

0

「プラグインをローカルドライブの一時ディレクトリにコピーする」という回避策は機能します。

于 2013-01-25T15:41:56.367 に答える