【问题标题】:Problems detecting plugins made with System.Addin检测使用 System.Addin 制作的插件时出现问题
【发布时间】:2009-02-06 15:42:31
【问题描述】:

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

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

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

我发现完成这项工作的唯一方法是复制与插件架构相关的所有文件夹: 插件 AddInSideAdapters 插件视图 合同 主机端适配器 HostView.dll

我猜想复制所有这些 dll 有点违背插件的目的。

还有其他人在使用新的 System.AddIn 时遇到过这些问题吗?

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

【问题讨论】:

    标签: c# wpf plugins system.addin


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      对于我们的实现,我确保将 HostView、Contract 和 AddInView DLL 打包在单独的 nuget 中,并且这些 VS 项目与我的 AddIn 或适配器不在同一个解决方案中。然后在 HostAdapter、AddInAdapter 和单个插件的 packages.config 中,我确保我们在 package 元素上使用了 allowedVersions 属性:

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

      这可确保不会发生会更改版本的意外 nuget 升级。

      【讨论】:

        猜你喜欢
        • 2011-07-21
        • 2012-06-11
        • 2011-05-15
        • 1970-01-01
        • 1970-01-01
        • 2010-11-20
        • 1970-01-01
        • 2011-01-14
        • 1970-01-01
        相关资源
        最近更新 更多