我们是2个团队(2个不同的供应商),致力于开发2个不同的C#DLL。 我正在使用的第一个DLL,必须在另一个团队开发的第二个DLL中调用公共函数。该函数不是COMVisible函数。
我们已就一些方法签名达成一致。第二个DLL将放在与第一个DLL相同的文件夹中。
每当其他团队发布第二个DLL的新版本时,我只想替换文件夹中的文件,而无需重新编译我的DLL,或使用regasm等注册其他DLL。
我应该如何编写代码来调用第二个DLL中的函数?优选地,如果存在不使用反射的解决方案,我将更喜欢。
进一步背景:
这两个DLL都将作为应用程序的一部分提供。我不想在第一个DLL中有第二个DLL的静态引用,因为最后我想生成2个DLL。目标是,如果稍后,其他团队想要更改DLL,他们可以简单地在用户安装中替换他们的DLL,而无需我重新编译我的DLL。
感谢。
答案 0 :(得分:1)
MEF可能正是您所寻找的:
Managed Extensibility Framework或MEF是一个用于创建轻量级,可扩展应用程序的库。它允许应用程序开发人员发现和使用不需要配置的扩展。它还允许扩展开发人员轻松封装代码,并且避免脆弱的硬依赖。 MEF不仅允许在应用程序中重用扩展,还可以跨应用程序重用。
最终,您将能够从文件夹
加载组件// Load parts from the available DLLs in the specified path using the directory catalog
var directoryCatalog = new DirectoryCatalog(directoryPath, "*.dll");
// ...
看看这个教程:
其基本目的是将组件插入已运行的应用程序