Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 主机的插件注册_C#_Plugins_Mef_Registration - Fatal编程技术网

C# 主机的插件注册

C# 主机的插件注册,c#,plugins,mef,registration,C#,Plugins,Mef,Registration,插件向主机注册的好方法是什么 我使用的是C#,这是一个WPF应用程序。我正在设计一个插件系统。因为我只是在设计阶段,我不需要细节。我会用MEF。在我的设计中,我希望每个插件都注册为主机的插件。在这种情况下,“注册”是非特定的;我只是想让主机能够自动定位每个可用的插件。我假设唯一需要的注册数据是每个插件的DLL的完整路径和文件名;换句话说,安装后,每个插件都会将自己添加到插件路径列表中。该插件的安装程序将需要能够找到列表,我问什么是一个好的方式来实现这一点。传统的解决方案是将所有插件放在指定的文件

插件向主机注册的好方法是什么

我使用的是C#,这是一个WPF应用程序。我正在设计一个插件系统。因为我只是在设计阶段,我不需要细节。我会用MEF。在我的设计中,我希望每个插件都注册为主机的插件。在这种情况下,“注册”是非特定的;我只是想让主机能够自动定位每个可用的插件。我假设唯一需要的注册数据是每个插件的DLL的完整路径和文件名;换句话说,安装后,每个插件都会将自己添加到插件路径列表中。该插件的安装程序将需要能够找到列表,我问什么是一个好的方式来实现这一点。传统的解决方案是将所有插件放在指定的文件夹中,但这需要用户这样做。理论上,插件可以找到主机并决定使用哪个文件夹,但如果我们这样做,插件可以再多走一步,将自己添加到插件列表中。我假设可以设计一种方法,使插件开发人员在插件安装中注册比要求插件安装程序在指定的插件目录中安装插件更容易。无论哪种方式,它都应该让用户易于安装插件

例如,强名称被认为是为了类似的目的而设计的,但微软表示强名称不应该用于前任。为什么不这么做的原因还不清楚,所以也许一个强有力的名字可以达到这个目的


基本上,我只是想获得一些关于学习内容的指导。

我想做的是看看流行的插件感知应用程序如何处理这个问题。也许是VisualStudio和Eclipse。顺便说一下,既然你决定使用MEF和WPF,你应该看看微软的Prism。我想我已经熟悉了其他插件系统。你是吗?常见的解决方案是基本上做MEF的DirectoryCatalog类所做的事情;也就是说,通常所有插件都放在指定的目录中。问题在于,它要么要求用户这样做,要么要求用户在指定位置安装软件。我希望能为用户设计一些更简单的东西。我已经决定创建一个插件管理器类库;我希望这是一个优雅而灵活的解决方案。然后,您应该看看安装开发工具(如NSIS、WiX、InstallShield等),并检查如何1)向插件安装项目添加先决条件(主机应用程序),2)找到先决条件的安装目录。您的问题不是如何注册插件,而是如何部署插件。新年快乐!另外,我使用的插件框架有MEF、Mono.Addins和System.AddIn。MEF和Mono.Addins我强烈推荐.WiX和InstallShield都创建msi(Windows Installer)文件。如果您熟悉Windows安装程序,那么提供一条如何操作的线索会有所帮助。是的,我当然需要了解细节。我会的。我在问是否有人熟悉Windows安装程序。