为什么我找不到那个集会
本文关键字:找不到 为什么 | 更新日期: 2023-09-27 17:54:25
AppDomainSetup domainSetup = new AppDomainSetup();
// Assign a global path that includes "prinergyweb'bin"
domainSetup.ApplicationBase = @"E:'Projects'IPP'main'prinergyweb";
domainSetup.PrivateBinPath = @"bin";
AppDomain newDomain = AppDomain.CreateDomain("Test", null, domainSetup);
newDomain.Load("A");
我确保所有的路径都是正确的,但它仍然抛出一个异常"FileNotFound"......为什么?你认为有多少原因会导致这个问题?(我已经确定"a.d l ll"存在)。
其他信息:
PS1: My disc is compacted
PS2: a .dll不是强命名的dll。
PS3:路径是我的PerForce的映射路径
问题是AppDomain.Load
组装被加载到两个域中。
如果当前AppDomain
对象表示应用程序域A,并且从应用程序域B调用Load方法,则将程序集加载到两个应用程序域中。
当前域需要知道这些程序集并加载它们。
如果你使用程序集绑定日志查看器,你会看到新创建的域从私有bin路径加载程序集,但当前的应用程序域不会。
这就是为什么你会得到"File not found"的异常。
来自MSDN AppDomain。加载方法
此方法应仅用于将程序集加载到当前应用程序域。提供这种方法是为了方便不能调用静态程序集的互操作性调用者。负载方法。要将程序集加载到其他应用程序域中,请使用方法,如CreateInstanceAndUnwrap。
如果您想从不同的位置加载一些程序集,您应该像我在这个答案中所说的那样做:从资源加载的程序集引发无法加载文件或程序集并处理AppDomain。AssemblyResolve事件