我有一个使用 Environment.CurrentDirectory 的目录交换方法的类。代码看起来像这样:
var str = Environment.CurrentDirectory;
Environment.CurrentDirectory = Path.GetDirectoryName(pathToAssembly);
var assembly = Assembly.Load(Path.GetFileNameWithoutExtension(pathToAssembly));
Environment.CurrentDirectory = str;
与我之前的文章一样,我们使用此目录切换方法来允许加载指定的程序集以及任何引用程序集以及非托管程序集。我遇到的问题是这个函数在两个单独的 AppDomain 中运行。在 AppDomain A(我创建的 AppDomain)中,代码工作正常。在 AppDomain B(默认 AppDomain)中,它会抛出 FileNotFoundException。对于这两个调用,我都试图加载相同的程序集。任何线索为什么会这样?