2009-05-01 16 views
0

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

バインディングは、最終的にそれをリリースして古いアセンブリをバックアップするキャッシュのようなものですか?サービスが再開するまでバインドされたままになりますか?

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

答えて

1

.NETランタイムは、アプリケーションドメインがシャットダウンされるまで(通常、プロセスが終了しても、単一のプロセスで複数のアプリケーションドメインを作成できるようになるまで)アセンブリをアンロードしません。

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