C# C在AppDomain中卸载程序集,而不使用原始字节数组

C# C在AppDomain中卸载程序集,而不使用原始字节数组,c#,reflection,appdomain,C#,Reflection,Appdomain,我想卸载一个自定义AppDomain,然后从硬盘中删除加载在此AppDomain中的程序集。我发现很多资源建议通过assembly.Loadbyte[]加载程序集。这样做可以删除文件,但是,我的代码不使用此加载的程序集 基本上我有两个程序集:A.dll和B.dll A.dll引用了B.dll并希望调用B.dll 在我的自定义AppDomain中,我通过Assembly.LoadFrom加载A.dll和B.dll。然后我在a中调用一个方法,它会自动调用加载的B 困难在于,在全局AppDomain中

我想卸载一个自定义AppDomain,然后从硬盘中删除加载在此AppDomain中的程序集。我发现很多资源建议通过assembly.Loadbyte[]加载程序集。这样做可以删除文件,但是,我的代码不使用此加载的程序集

基本上我有两个程序集:A.dll和B.dll

A.dll引用了B.dll并希望调用B.dll

在我的自定义AppDomain中,我通过Assembly.LoadFrom加载A.dll和B.dll。然后我在a中调用一个方法,它会自动调用加载的B

困难在于,在全局AppDomain中,A和B都已加载,但是,在全局AppDomain中加载的B.dll版本与我希望在自定义AppDomain中加载的版本不同

使用Assembly.LoadFrom方法调用B的正确版本

使用Assembly.Loadbyte[]方法调用全局AppDomain中的B版本

我想要的是:将A.dll加载为byte[]并正确引用它,或者使用Assembly.LoadFrom加载A.dll,但在卸载AppDomain后能够将其删除

有人知道如何做到这一点吗

谢谢,
Christian

我认为一种方法是创建一个新的AppDomain,并使用卷影复制来加载新域中的程序集。然后,您应该能够删除该程序集

见: