我有一个类,它使用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。对于这两个调用我试图加载相同的程序集。任何线索为什么会出现这种情况?
答案 0 :(得分:1)
这个post表明你无法在加载后更改主AppDomain的搜索路径 - 你必须在配置文件中设置它 - 并且有很多建议,尽管它们都是归结为“你无法在主AppDomain中执行此操作”。