0

System.AddIn を使用して、.dll ファイルをロックせずに AddIn を読み込んで有効にする方法はありますか? ファイルを削除またはオーバーライドして、新しいバージョンのアドインをロードしたいと考えています。

現時点でファイルのロックを解除する唯一の方法は、アドインをシャットダウンすることです。しかし、着信コールに対して常に有効にしておく必要があります(非同期サービス、はい、悪夢です)。

または、実行時にアドインを更新する別の方法があるのか​​もしれませんが、私はそれを正しく行っていません。これを行う正しい方法を知りたいです。ありがとう!

4

2 に答える 2

1

System.AppDomain クラスの ShadowCopy 機能はどうですか?

まだ試していませんが、次の方法を試すことができます。

  1. AppDomainSetupを作成します。
  2. AppDomainSetup インスタンスで、ShadowCopyFiles を true に設定します。
  3. AppDomainSetup インスタンスで、ShadowCopyFilesDirectories を、実行時に上書きできるようにするアセンブリを含むディレクトリ パスに設定します。これは、単にアドイン アセンブリが配置されているディレクトリである可能性があります。少し実験する必要があります。
  4. AppDomainSetup インスタンスで、必要に応じて他のすべてを設定します。
  5. この AppDomain.CreateAppDomain のオーバーロードを使用して、新しいアプリケーション ドメインを作成します。
  6. AddInToken.LoadAddIn のこのオーバーロードを使用してアドインを読み込みます

シャドウ コピーの詳細については、こちらを参照してください。CodePlexのSystem.AddIn Tools and Samplesページのこのスレッドもお読みください。

于 2012-03-29T13:31:10.187 に答える
0

新しいバージョンをロードしたら、ハンドオーバーはどのように機能すると思いますか?

2 つのアドインが必要なようです。1 つは着信呼び出しを受信して​​バッファリングするためのもので、もう 1 つはそれらの呼び出しを処理するためのものです。その後、処理アドインをシャットダウンしてアップグレードできます。一方、メッセージ受信アドインは、新しいバージョンの処理アドインが起動して実行されるまで、非同期呼び出しをバッファできます。

于 2012-03-21T18:46:20.117 に答える