【发布时间】:2012-09-09 17:18:06
【问题描述】:
我使用自定义AppDomain 来加载/卸载程序集。但是当程序集被卸载时,我可以在AppDomain.CurrentDomain 下看到它。
怎么可能?这是正常行为还是我遗漏了什么?
感谢您提供任何线索!
string assemblyPath = @"C:\MyFile.dll";
var assemblyName = AssemblyName.GetAssemblyName(assemblyPath);
var ads = new AppDomainSetup
{
ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
DisallowCodeDownload = true
};
AppDomain newDomainName = AppDomain.CreateDomain("newDomainName", null, ads);
try
{
Assembly testLibrary = newDomainName.Load(assemblyName);
var c1 = AppDomain.CurrentDomain.GetAssemblies();
var c2 = newDomainName.GetAssemblies();
}
finally
{
AppDomain.Unload(newDomainName);
var c3 = AppDomain.CurrentDomain.GetAssemblies();
// The assembly is still visible here!!!
}
【问题讨论】:
-
@asawyer 不,这不是重复的问题,我使用新的 AppDomain 来保持加载的程序集。