Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何加载依赖程序集?_C#_Reflection - Fatal编程技术网

C# 如何加载依赖程序集?

C# 如何加载依赖程序集?,c#,reflection,C#,Reflection,我有一个项目处理器,它依赖于其他2个项目 当我编译项目时,我会在Bin文件夹中得到dll Processor.dll和其他项目的depend dllProcessor.dll BusinessAction.dll和Repository.dll。 我试图通过初始化typeProcessRequest类从Processor.dll调用方法 像这样 Assembly processorAssembly = Assembly.LoadFile(path + "Processor.DLL"));

我有一个项目处理器,它依赖于其他2个项目

当我编译项目时,我会在Bin文件夹中得到dll Processor.dll和其他项目的depend dllProcessor.dll BusinessAction.dll和Repository.dll。

我试图通过初始化typeProcessRequest类从Processor.dll调用方法

像这样

 Assembly processorAssembly = Assembly.LoadFile(path + "Processor.DLL"));

        Type myType= processorAssembly.GetType("Namespace.ProcessRequest");

        myType.InvokeMember("Process", BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public, null, submitOfferType, new object[] { 12345 });
Process方法有一些逻辑来处理并保存到数据库中

当我使用InvokeMember()调用procee方法时

我得到异常无法加载文件或程序集“Namespace.BusinessAction,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。


我应该调用方法吗

Appdomain有一个事件,如果找不到引用,将触发该事件:

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
在事件处理程序中,可以手动搜索程序集:

Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    string s = @"C:\lib\" + args.Name.Remove(args.Name.IndexOf(',')) + ".dll";
    return Assembly.LoadFile(s);
}
试一试


这将加载所有支持的DLL

请确保您查看以下内容:您救了我的一天,伙计。。。我已经找了好几天了!!谢谢。这与加载依赖程序集的效果不同。Hcb的答案是正确的。
Assembly processorAssembly = Assembly.LoadFrom(path + "Processor.DLL"));