AppDomain卷影副本 - 加载/卸载动态加载的Dll

我正在尝试动态加载DLL的代码如下所示。
AppDomain appDomain = AppDomain.CreateDomain("DllDomain");
Assembly a = appDomain.Load(fileName);
//Assembly a = Assembly.LoadFrom(fileName);
objType = a.GetType(className);
obj = a.CreateInstance(className);
object[] args = new object[1];
args[0]=(object) "test";
object ret = objType.InvokeMember("Perform", BindingFlags.Default | BindingFlags.InvokeMethod, null, obj, args);
string output = ret.ToString();
obj = null;
AppDomain.Unload(appDomain);
这是我在WCF服务中使用的代码,但它仍然无法正常工作。 听说我们可以在AppDomain中使用“Shadow Copying”来实现。但我不知道有关'影子复制'以及如何在上面的代码中实现相同的内容。 请提供工作代码作为“影子复制”的示例。 -B.S.     
已邀请:
您可以将程序集加载到应用程序域中,但不能从该域中卸载它们。 但是,在一个应用程序域中,您可以创建第二个应用程序域并将程序集加载到第二个应用程序域中。之后,您可以选择卸载第二个应用程序域,然后卸载您加载到第二个应用程序域的程序集。 这是基本原则。实际上,当您在应用程序域之间设置某种形式的通信时,您会发现许多障碍(它们通过.NET版本进行了更改)。 在这里提供工作代码的规模可能太大了。     

要回复问题请先登录注册