【发布时间】:2018-06-15 12:20:12
【问题描述】:
我在 C# 应用程序中创建了一个插件架构。在特殊文件夹中,我上传 dll 并系统搜索某些接口,并在插件中使用反射调用函数。但是其中一个插件(dll)引用了 Open.XML dll,它没有安装在运行应用程序的服务器上。它是一种创建包含它需要的所有库的插件(编译它?)的方法。还是应该以不同的方式完成?
【问题讨论】:
标签: c# dll plugins architecture
我在 C# 应用程序中创建了一个插件架构。在特殊文件夹中,我上传 dll 并系统搜索某些接口,并在插件中使用反射调用函数。但是其中一个插件(dll)引用了 Open.XML dll,它没有安装在运行应用程序的服务器上。它是一种创建包含它需要的所有库的插件(编译它?)的方法。还是应该以不同的方式完成?
【问题讨论】:
标签: c# dll plugins architecture
1) 将任何所需的 DLL 与插件 DLL 一起分发,并将它们放在插件文件夹中。将插件文件夹添加到程序集in the app.config 或add a handler for the AssemblyResolve event 的探测路径。
2) 使用ILMerge 将插件和所需的程序集合并为一个程序集。
如果您将所有插件加载到同一个应用程序域中,如果将相同类型合并到多个插件中,这将导致有趣的问题。
【讨论】: