【发布时间】:2012-05-21 18:13:33
【问题描述】:
我以这样一种方式构建了一个后端,将业务逻辑放置在运行时加载的 dll 中。使用 ShadowCopyFiles = true 和文件系统监控,我可以在不重新启动主机进程的情况下修改业务逻辑。
到目前为止一切都很好......
让我们称主机 appdomain A,和其中一个孩子 B。
不幸的是,如果我在程序集 C 中进行更改,该程序集由 B 而不是 A 引用,这些更改不会在 B 重新加载时反映出来。我认为这是因为 A 加载 C 本身。我必须采取哪些步骤来防止 A 加载 C?
这是A用来加载B的代码:
AppDomainSetup appDomainSetup = new AppDomainSetup();
appDomainSetup.CachePath = ServiceDLLPath + @"\Shadow";
appDomainSetup.ShadowCopyFiles = "true";
ad = AppDomain.CreateDomain(assemblyName, null, appDomainSetup);
ad.InitializeLifetimeService();
try
{
service = (IService)ad.CreateInstanceFromAndUnwrap(assemblyName,
"AppName.Services." + typeName);
service.Start();
}
catch (Exception e)
{
LogManager.Log("AppDomain load failed: " + e.Message);
return false;
}
【问题讨论】:
标签: c# assemblies appdomain