1

我有一个使用 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。对于这两个调用,我都试图加载相同的程序集。任何线索为什么会这样?

4

1 回答 1

1

这篇文章建议您一旦加载主 AppDomain 就不能更改它的搜索路径 - 您必须在配置文件中设置它 - 并且有许多建议,尽管它们都归结为“你可以” t 在主 AppDomain 中执行此操作”。

于 2008-09-26T20:04:00.350 回答