直到最近,我通过调用Assembly.LoadFrom加载我的程序集,它没问题。但是现在我需要在临时的appDomain中加载它,但是当我尝试在临时域中加载程序集时,我一直有一个FileLoadException。我试图将appDomainSetup参数传递给CreateDomain方法,但没有成功。
这是我的代码。
var tempDomain = AppDomain.CreateDomain("TempDomain");
Assembly sampleAssembly = tempDomain.Load(pathToDll);
我的程序集位于我的应用程序基目录的子目录中
答案 0 :(得分:0)
AppDomain.Load将程序集加载到当前正在执行的AppDomain中,而不是“TempDomain”中。正如MSDN文档中所述:
此方法仅用于将装配加载到当前 应用领域。提供此方法是为了方便 无法调用静态Assembly.Load的互操作性调用者 方法。要将程序集加载到其他应用程序域,请使用a CreateInstanceAndUnwrap等方法。
现在,在您的情况下,调用失败,因为当前正在执行的AppDomain(很可能是您的主AppDomain)无法从子目录中找到程序集。当您尝试在加载上下文中加载程序集时,应确保这些程序集位于以下某个位置:
有关详细信息,请查看以下文章:
How the Runtime Locates Assemblies
Best Practices for Assembly Loading
Back to Basics: Using Fusion Log Viewer to Debug Obscure Loader Errors