如何加载依赖程序集?

2024-02-08

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

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

我尝试通过启动类型从 Processor.dll 调用方法处理请求 class.

像这样

 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何加载依赖程序集? 的相关文章

随机推荐