检测使用System.Addin进行插件的问题

时间:2009-02-06 15:42:32

标签: c# wpf plugins system.addin

我正在使用System.Addin为我的应用程序的一小部分创建插件。我目前有两个不同的插件,它们都被正确检测和初始化。我甚至可以复制&粘贴创建的插件文件夹,我也会看到它们。

当我在调试和发布文件夹中玩游戏时,一切都很好用。当我尝试将其中一个插件放入安装了应用程序的插件文件夹时,会出现问题。即使合同,视图或适配器中没有任何更改,也永远不会检测到复制的插件。

我尝试过从不同安装版本的软件复制和粘贴插件(合同仍然相同)。

我发现使这项工作的唯一方法是复制与插件架构相关的所有文件夹: 的加载项 AddInSideAdapters AddInViews 合同 HostSideAdapters HostView.dll

我猜想复制所有这些dll会破坏插件的目的。

有没有其他人在使用新的System.AddIn?

时遇到这些问题

编辑:插件是使用管道构建器工具

创建的

2 个答案:

答案 0 :(得分:1)

您是否尝试过分析插件存储缓存?也许这就是问题的根源。看一下可用的方法here

答案 1 :(得分:0)

MAF 非常对HostView,Contract和AddInView程序集的DLL版本敏感。引用AddInView接口的特定DLL版本的AddIn将始终需要该确切版本。同样,AddInAdapter应该引用AddInView的相同DLL版本。如果您构建一个新的AddIn,它必须链接到与AddInAdapter链接的完全相同的版本DLL。

对于我们的实现,我确保将HostView,Contract和AddInView DLL打包在单个nugets中,并且这些VS项目不是与AddIns或Adapters相同的解决方案的一部分。然后在HostAdapter,AddInAdapter和各个AddIns的packages.config中,我确保使用allowedVersions元素上的package属性:

    <package id="AddInPipelineSegments.AddInViews.AddinViewV1"
         version="139.37.8.1011"
         allowedVersions="[139.37.8.1011]"
         targetFramework="net451" />

这确保没有意外的nuget升级会改变版本..