我有一个问题,加载到我的新 Appdomain 的 DLL 也加载到了主 appdomain!
我有一个继承自 MarshalByRefObject 的类“Servicebase”。
现在我有不同的子类继承自这个基类。
这些子类应该在它们自己的应用程序域中实例化。
我用这段代码做的:
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = Path.GetDirectoryName(dllFile);
setup.ApplicationName = Path.GetFileNameWithoutExtension(dllFile);
setup.LoaderOptimization = LoaderOptimization.MultiDomainHost;
setup.ShadowCopyFiles = "true";
setup.ConfigurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
hostAppDomain = AppDomain.CreateDomain(setup.ApplicationName, AppDomain.CurrentDomain.Evidence, setup);
这行得通...
现在我用这段代码创建我的实例:
host = hostAppDomain.CreateInstanceFrom(dllFile, className.Split(',')[0]);
当我现在检查“AppDomain.CurrentDomain.GetAssemblies()”时,我的实例程序集没有加载到我的主程序集中。
但执行此操作后:
var inst = (ServiceBase)host.Unwrap();
我当前的程序集也加载了 dll。
谁能告诉我为什么?我能做什么?