启动CLR主机后是否有办法(API函数)设置C#程序集查找路径,以便ExecuteInDefaultAppDomain()函数找到它?
提前感谢。
答案 0 :(得分:2)
你可以这样做。基本上每次无法找到程序集的路径时都会调用AssemblyResolve
事件。然后,您有机会手动加载该程序集。
AppDomain.CurrentDomain.AssemblyResolve +=
new ResolveEventHandler(CurrentDomain_AssemblyResolve);
private System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender,
ResolveEventArgs args)
{
string name = args.Name;
//You can return null if you don't know how to load this assembly
return Assembly.LoadFrom(SomeFunction(name));
}
答案 1 :(得分:0)
似乎只有two ways来指定程序集的位置。
不幸的是,它们都不适合这种情况。因此,拥有程序集目录的可能列表和程序集的名称,需要手动定位文件,然后将完整路径传递给ExecuteInDefaultAppDomain()函数。
但是,我仍然不明白为什么CLR api中没有提供这样的功能(或者可能是这样,但没有正确记录)。