AppDomain.Unload不会移除dll上的锁
我使用以下代码创建新的AppDomain并将我的程序集加载到其中,其中我的程序集加载成功,但在调用AppDomain.Unload方法后,加载的DLL上仍有锁,我之所以去创建新的AppDomain解决方案,是因为我在网上发现,这是加载/卸载程序集以及使程序集可替换的推荐技术,你知道吗 这是我的密码:AppDomain.Unload不会移除dll上的锁,appdomain,Appdomain,我使用以下代码创建新的AppDomain并将我的程序集加载到其中,其中我的程序集加载成功,但在调用AppDomain.Unload方法后,加载的DLL上仍有锁,我之所以去创建新的AppDomain解决方案,是因为我在网上发现,这是加载/卸载程序集以及使程序集可替换的推荐技术,你知道吗 这是我的密码: public sealed class AssemblyLoader : MarshalByRefObject { private static AppDomain LocalDomain
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;
}
}
}
我不确定,但从理论上讲,它不应该更像这样。 您没有通过新创建的AppDomain加载程序集
public static Assembly LoadAssembly(string path)
{
try
{
Assembly assembly = LocalDomain.Load(AssemblyName.GetAssemblyName(path));
if (assembly != null)
return assembly;
}
catch { }
// ..
}
我在遇到以下错误时尝试了您的代码:无法加载文件或程序集“MyAssembly,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。我想在此指出,我的程序集位于bin以外的另一个目录中。您需要订阅
AssemblyResolve
事件。我被卡住了!!!我分配了AssemblyResolve事件,但没有运气,仍然是相同的错误,有什么建议吗?