簡體   English   中英

檢測使用System.Addin制作的插件時出現問題

[英]Problems detecting plugins made with System.Addin

我正在使用System.Addin為我的應用程序的一小部分創建插件。 我目前有兩個不同的插件,它們都可以被正確檢測和初始化。 我什至可以復制並粘貼創建的插件文件夾,我也會看到它們也出現。

當我在debug和release文件夾中玩耍時,一切都很好。 當我嘗試將其中一個插件放入安裝應用程序的插件文件夾中時,就會出現問題。 即使在協定,視圖或適配器中沒有任何變化,也永遠不會檢測到其中復制的插件。

我嘗試過從軟件的其他已安裝版本(其合同仍然相同)復制和粘貼插件。

我發現使這項工作唯一的方法是復制與插件體系結構有關的所有文件夾: AddIns AddInSideAdapters AddInViews合同HostSideAdapters HostView.dll

我猜想復制所有這些dll都會破壞插件的目的。

其他人是否對新的System.AddIn有這些問題?

編輯:插件是使用管道構建器工具創建的

您是否嘗試分析外接程序存儲緩存? 也許這就是問題的根源。 在這里看看可用的方法。

MAF對HostView,Contract和AddInView程序集的DLL版本非常敏感。 引用AddInView接口的特定DLL版本的AddIn將始終需要該確切版本。 同樣,AddInAdapter應該引用AddInView的相同DLL版本。 如果您構建一個新的AddIn,則它必須鏈接到與AddInAdapter鏈接的完全相同的DLL版本。

對於我們的實現,我確保將HostView,Contract和AddInView DLL打包在單獨的nuget中,並且確保這些VS項目與我的AddIns或Adapters不在同一解決方案中。 然后在HostAdapter,AddInAdapter和各個AddIn的packages.config中,確保我們在package元素上使用了allowedVersions屬性:

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

這樣可以確保沒有意外的nuget升級會更改版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM