【发布时间】:2012-08-16 14:52:31
【问题描述】:
我的目标是在 2 个给定文件夹之间进行缺失的依赖检查。 想象一下以下设置。
Root\DirA\A.dll
Root\DirB\B.dll
B 依赖于 A。
因此,鉴于这些文件夹,我想创建一个新的 AppDomain,加载 B.dll 并在新的 AppDomain 中自动解析和隔离来自 DirA(A.dll) 的依赖项。
这里的隔离是关键,因为当我卸载这个 AppDomain 时,我想创建一个新的 AppDomain,可能会再次将 DirA 作为依赖项,但 DirC 库需要它,因此如果 DirC 也依赖 DirB,我想要它抛出异常。
编辑:添加代码示例以帮助更好地描述我的问题。
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = @"C:\Root";
setup.ApplicationName = "Isolated Domain"
setup.PrivateBinPath = @"DirA;DirB";
setup.PrivateBinPathProbe = "";//disable search in AppBase..
var domain = AppDomain.CreateDomain(Guid.NewGuid().ToString(),
AppDomain.CurrentDomain.Evidence,
setup,
AppDomain.CurrentDomain.PermissionSet);
//The following statement in theory should pick B.dll's dependency from DirA.
var assembly = domain.Load(AssemblyName.GetAssemblyName(@"C:\Root\DirB\B.dll").Name);
//Do the same in a different domain for C.dll
感谢您对此的任何帮助。
【问题讨论】:
标签: c# clr appdomain appdomainsetup