這套體系是由xml與相關類共同作用形成的。
xml檔案為:sharpdevelopcore.addin(搜尋一下,這個檔案是唯一的)
相關類在:core/addins
在邏輯上,sharpdevelop有一棵外掛程式樹addintree,樹上有很多節點addintreenode,對外表現為sharpdevelopcore.addin這個xml檔案。
每個addin外掛程式由codon和conditional組成。如下圖:
<
addin name ="
sharpdevelop core
"author ="
mike"=
"gpl
"url ="
"description ="
ncvs core module
"version ="
1.0.0
">
<
runtime
>
<
import assembly="
sharpdevelop.base.dll
"/>
<
import assembly="
csharpparser.dll
"/>
runtime
>
<
extension path ="
/sharpdevelop/workbench/ambiences
">
<
class id ="
net"
class="
icsharpcode.sharpdevelop.services.netambience
"/>
<
class id ="
csharp
"class="
icsharpcode.sharpdevelop.services.csharpambience
"/>
<
class id ="
vb.net
"class="
icsharpcode.sharpdevelop.services.vbambience
"/>
extension
>
addin
>
每個extension節點就是乙個codon物件,在程式中抽象為icodon:
icodon的屬性就是xml中的實體對映,abstractcodon抽象類提供了屬性的實現(buliditem()方法在最底層實現)
buliditem()方法很重要,簽名為:
public override object builditem(object owner, arraylist subitems, conditionfailedaction action)
codon的生成由codonbuilder和codonfactory協作完成。
Revit外掛程式載入,addin檔案的設定
問題描述 revit二次開發使用addin載入時,出現如下錯誤。外部工具 不存在於附加模組對應的 商id節點 無法初始化附加模組 helloworld.addin 因為附加模組登錄檔中缺少所需的 商id節點值。可根據 商id節點識別附加模組應用程式的 商。如要revit執行附加模組,必須註冊清單 h...
解析phpwind的外掛程式體系
看phpwind的官方 發現有個很重要版塊為 phpwind 外掛程式開發 第一感覺是phpwind有個很完善的外掛程式體系,吸引開發者來基於外掛程式體系進行二次開發。於是乎我饒有興趣地解析一下phpwind的外掛程式體系的實現。我先說說在我看來外掛程式體現比較重要的兩個特徵 對於第乙個特徵phpw...
解析phpwind的外掛程式體系
看phpwind的官方 發現有個很重要版塊為 phpwind 外掛程式開發 第一感覺是phpwind有個很完善的外掛程式體系,吸引開發者來基於外掛程式體系進行二次開發。於是乎我饒有興趣地解析一下phpwind的外掛程式體系的實現。我先說說在我看來外掛程式體現比較重要的兩個特徵 對於第乙個特徵phpw...