C# 启动CLR后如何设置程序集查找路径?

C# 启动CLR后如何设置程序集查找路径?,c#,c++,windows,clr,C#,C++,Windows,Clr,是否有一种方法(API函数)可以在启动CLR主机后设置C#程序集查找路径,以便函数找到它 提前谢谢。你可以这样做。基本上,每次找不到程序集的路径时都会调用AssemblyResolve事件。然后,您就有机会手动加载该程序集 AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); private System.Reflection.Assembly

是否有一种方法(API函数)可以在启动CLR主机后设置C#程序集查找路径,以便函数找到它


提前谢谢。

你可以这样做。基本上,每次找不到程序集的路径时都会调用
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));
    }
似乎只有指定程序集的位置

不幸的是,它们都不适用于这种情况。因此,要获得程序集目录和程序集名称的可能列表,需要手动定位文件,然后将完整路径传递给ExecuteInDefaultAppDomain()函数


但是,我仍然不明白为什么CLR api中没有提供这种功能(或者可能是,但没有正确记录)。

谢谢您!但是,我正在寻找一种方法来设置程序集的路径(包含目标程序集的目录束),以便调用ExecuteInDefaultAppDomain()自动查找并加载它。在我的回答中添加了另一个选项CLR在(加载)程序集时不查看
path
环境变量。但是,有没有办法把探测目录传给它?嗯。。。所以在我的代码中可能是加载非托管DLL。。。对不起