AppDomain和当前目录

时间:2020-03-06 14:47:58  来源:igfitidea点击:

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

解决方案

这篇文章建议我们一旦主AppDomain加载后便无法更改其搜索路径-我们必须在配置文件中对其进行设置-并且有许多建议,尽管它们都归结为"我们不能做在主要的AppDomain中"。