2

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

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

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

我发现完成这项工作的唯一方法是复制与插件架构相关的所有文件夹: AddIns AddInSideAdapters AddInViews Contracts HostSideAdapters HostView.dll

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

新的 System.AddIn 是否有其他人有这些问题?

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

4

2 回答 2

1

您是否尝试过分析插件商店缓存?也许这就是问题的根源。在这里查看可用的方法。

于 2009-03-30T14:14:38.390 回答
0

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 中,我确保我们使用元素allowedVersions上的属性:package

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

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

于 2015-06-19T16:59:26.997 回答