Tag: 动态加载

如何从C ++ DLL动态加载C#dll

我有一个C ++应用程序。 这支持用户的C ++插件DLL,它将动态加载这些DLL,然后能够动态创建和使用用户的类型。 这些用户类型派生自主应用程序核心库中定义的基本类型和接口,因此我将用户的对象作为指向基类的指针,并调用用户的虚函数以使其发生魔力。 现在我想扩展插件DLL以允许托管DLL(我主要关心C#)。 我想在C#插件DLL中发生所有相同的魔术。 我怎样才能动态加载这些dll,有些我认为我目前使用的win32的LoadLibrary会对托管DLL感到满意。 我无法在编译/链接时访问这些库,它们来自用户。 在我加载库之后,不幸的是我怀疑COM在我将来作为调用派生函数的方式。 可能我可以使用我一直在阅读的CLI / C ++包装器,但我在这里非常缺乏经验,并希望得到任何建议或指向相应文章的链接。

在一个进程中加载​​的最大appdomains数

由于动态程序集加载需要appdomain加载以启用使用卸载相关appdomain来终止程序集,是否在要加载的进程中有“最大”数量的appdomains? 我在想一个基于服务器的应用程序,每个用户都可以动态地运行他的专有C#代码。 但是,如果2000个用户登录并加载他们的代码呢? 除了appdomians的数量之外,我可能遇到任何可能的限制吗? 谢谢。

实现插件架构 – 动态DLL加载

我的应用程序基本上是一个带有预加载控件的设计器,您可以使用控件设计页面。 我计划将来发布越来越多的控件。 我不想为新添加的控件发布新版本,因为它有它的缺点。 所以我想的是addon / plugin类型的架构,我只是单独发布addon / plugin,他们可以安装并获得设计器内的控件。 现在我使用xml文件作为插件来指定控件,它的行为,它的样式等。每个xml(插件)代表一个控件。 但我发现很难实现这个,因为我要写一个通用的解析器来读取所有的插件。 相反,我可以为每个插件释放一个dll,这使我能够更好地控制编写代码来定义控件的行为/外观并通过主引擎动态加载它吗? 如果是这样,我如何检查dll并在我的应用程序中动态加载它?