我正在使用System.Addin为我的应用程序的一小部分创建插件。我目前有两个不同的插件,它们都被正确检测和初始化。我甚至可以复制&粘贴创建的插件文件夹,我也会看到它们。
当我在调试和发布文件夹中玩游戏时,一切都很好用。当我尝试将其中一个插件放入安装了应用程序的插件文件夹时,会出现问题。即使合同,视图或适配器中没有任何更改,也永远不会检测到复制的插件。
我尝试过从不同安装版本的软件复制和粘贴插件(合同仍然相同)。
我发现使这项工作的唯一方法是复制与插件架构相关的所有文件夹: 的加载项 AddInSideAdapters AddInViews 合同 HostSideAdapters HostView.dll
我猜想复制所有这些dll会破坏插件的目的。
有没有其他人在使用新的System.AddIn?
时遇到这些问题编辑:插件是使用管道构建器工具
创建的答案 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升级会改变版本..