使用以下代码创建新的AppDomain并将我的程序集加载到其中,我的程序集成功加载,但在我调用AppDomain.Unload方法后,仍然锁定已加载的dll,我去创建新的AppDomain解决方案因为我在网上发现这是加载/卸载程序集的推荐技术,也是为了使程序集可以替换,任何想法?
这是我的代码:
public sealed class AssemblyLoader : MarshalByRefObject
{
private static AppDomain LocalDomain = AppDomain.CreateDomain("LocalDomain");
public static Assembly LoadAssembly(string path)
{
try
{
Assembly assembly = Assembly.Load(AssemblyName.GetAssemblyName(path));
if (assembly != null)
return assembly;
}
catch { }
return Assembly.LoadFrom(path);
}
public static void Unload()
{
if (LocalDomain != null)
{
AppDomain.Unload(LocalDomain);
LocalDomain = null;
}
}
}
答案 0 :(得分:0)
我不确定,但理论上不应该更像这样。 您没有通过新创建的AppDomain加载程序集。
public static Assembly LoadAssembly(string path)
{
try
{
Assembly assembly = LocalDomain.Load(AssemblyName.GetAssemblyName(path));
if (assembly != null)
return assembly;
}
catch { }
// ..
}