AppDomain.Unload不会移除dll上的锁

AppDomain.Unload不会移除dll上的锁,appdomain,Appdomain,我使用以下代码创建新的AppDomain并将我的程序集加载到其中,其中我的程序集加载成功,但在调用AppDomain.Unload方法后,加载的DLL上仍有锁,我之所以去创建新的AppDomain解决方案,是因为我在网上发现,这是加载/卸载程序集以及使程序集可替换的推荐技术,你知道吗 这是我的密码: public sealed class AssemblyLoader : MarshalByRefObject { private static AppDomain LocalDomain

我使用以下代码创建新的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;
        }
    }
}

我不确定,但从理论上讲,它不应该更像这样。 您没有通过新创建的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事件,但没有运气,仍然是相同的错误,有什么建议吗?