1

私は持っているクラスを持っていますpublic Assembly LoadedAssembly { set; get; }

var assemblyName = AssemblyName.GetAssemblyName(fullPathToDLLFile);
myClass.LoadedAssembly = Assembly.Load(assemblyName);

このクラスは私が維持していApplication.Current.Properties["MyClass"]ます。

私はそれを無効にしようとしますApplication.Current.Properties["MyClass"] = null;が、役に立ちません。

読み込まれたアセンブリが機能することがわかります (内部にタイマーがあり、機能しています)。

どうすればきれいにできますか?

AppDomain d = AppDomain.CreateDomain("NewDomain", null, domaininfo);(アセンブリをロードするようなものは使用しません 。)

4

2 に答える 2

3

アセンブリを任意にアンロードすることはできません。代わりに、アセンブリが読み込まれている AppDomain をアンロードする必要があります (これにより、AppDomain 内のすべてのアセンブリがアンロードされます)。別の AppDomain にロードしていない場合、それを行う唯一の方法は、アプリケーションをシャットダウンすることです。

この質問には、これがサポートされていない理由の詳細を含むさまざまなリンクがあります: How to unload an assembly from the primary AppDomain?

于 2012-09-14T15:38:45.757 に答える
2

アセンブリをアンロードすることはできませんが、アセンブリをロードした AppDomain をアンロードできます。この説明を参照してください。

于 2012-09-14T15:39:53.323 に答える