c# - 如何加载依赖程序集?

标签 c# reflection

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

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

我试图通过启动类型 ProcessRequest 类从 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);
}

关于c# - 如何加载依赖程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6354299/

相关文章:

c# - 异步/等待对比任务/延续 UI 控制访问

c# - MasterPage 对象页面对象后面的aspx 页面对象?

c# - 包中不存在指定部件

json - 如何将 JSON 解码为通过反射创建的值?

python - 按照它们在文件中出现的顺序获取 Python 模块中所有函数名称的列表?

java - 如何从私有(private)静态内部类访问变量

c# - Compact Framework - 在加载期间禁用鼠标事件

c# - 转换参数C#/SQL Server失败

java - 如何让 Spring 接受流畅(非 void)的 setter ?

Python环境变量通过反射