0

GAC からアセンブリを取得するサービスが複数あります。これらのサービスのいずれかをインストールすると、さまざまなサービスによって共有される新しいアセンブリで GAC が更新され、新しいポリシー ファイルが GAC に挿入されるため、以前のすべてのバージョンが新しいアセンブリを検索します。すべてのサービスは、サービスを再起動せずにポリシーを取得し、新しいアセンブリを完全に使用します。このリリースをロールバックし、アセンブリとポリシーをアンインストールして、新しいアセンブリのインストールに関連するサービスを再起動すると、問題と疑問が生じます。明らかに、再起動されたサービスは、GAC 内の以前のバージョンのアセンブリを取得します。ただし、このアセンブリを使用するサーバー上で実行されている他のサービスは、ポリシー ファイルから新しいバージョンのアセンブリにバインドされたままです。私の質問は次のとおりです。

バインドはキャッシュのようなもので、最終的には解放されて古いアセンブリに戻りますか? または、サービスが再起動するまでバインドされたままになりますか?

再起動が必要な場合は、このアセンブリを使用するすべてのサービスを見つけてそれらのサービスを再起動するか、サーバー自体を再起動して、GAC から削除されたアセンブリへのブラインドを削除しますか?

4

1 に答える 1

1

.NET ランタイムは、アプリケーション ドメインがシャットダウンされるまでアセンブリをアンロードしません (通常は、プロセスが終了するときですが、1 つのプロセスで複数のアプリケーション ドメインを作成できる場合)。

他のサービスをシャットダウンし、ポリシー ファイルと新しいアセンブリを削除してから、関連するすべてのサービスを再起動する必要があると思います。

于 2009-05-01T17:04:29.183 に答える