SharpDevelop学习笔记--什么是Addin

简介: 像这样根结点是Addin的一个XML文件就是Addin <AddIn name = "Typed Collection Wizard"  author = "Mike Krueger"  copyright = "GPL"  url = "unknown"  description = "Creates a typed collection"  version = "1.0.0"

像这样根结点是Addin的一个XML文件就是Addin

< AddIn  name  = "Typed Collection Wizard"
  author 
= "Mike Krueger"
  copyright 
= "GPL"
  url 
= "unknown"
  description 
= "Creates a typed collection"
  version 
= "1.0.0" >

  
< Runtime >
    
< Import  assembly ="TypedCollectionWizard.dll" />
  
</ Runtime >

  
< Extension  path  = "/SharpDevelop/Templates/File/TypedCollection" >
    
< DialogPanel  id  = "CollectionGenerator"
      label 
= "Typed Collection"
      class 
= "TypedCollectionGenerator.TypedCollectionWizardPanel" />
  
</ Extension >

</ AddIn >

<Runtime>中包含的是这个addin正常工作所需的程序集列表,
 
<Extension>中包含的子结点,叫做一个codon 

Addin类中分析addin文件的部分

public   class  AddIn
... {
    
string name        = null;
    
string author      = null;
    
string copyright   = null;
    
string url         = null;
    
string description = null;
    
string version     = null;
    
string fileName    = null;
    
    Hashtable        runtimeLibraries       
= new Hashtable();
    
    ArrayList        extensions 
= new ArrayList();
    
  
    
    
/**//// <summary>
    
/// returns a hashtable with the runtime libraries
    
/// where the key is the assembly name and the value
    
/// is the assembly object.
    
/// </summary>

    public Hashtable RuntimeLibraries 
    
...{
        
get 
        
...{
            
return runtimeLibraries;
        }

    }

    
    
/**//// <summary>
    
/// returns a arraylist with all extensions defined by
    
/// this addin.
    
/// </summary>

    public ArrayList Extensions 
    
...{
        
get 
        
...{
            
return extensions;
        }

    }

    
    
/**//// <summary>
    
/// Initializes this addIn. It loads the xml definition in file
    
/// fileName.
    
/// </summary>

    public void Initialize(string fileName)
    
...{
        
this.fileName = fileName;
        XmlDocument doc 
= new XmlDocument();
        doc.Load(fileName);
        
        
try 
        
...{
            name        
= doc.SelectSingleNode("AddIn/@name").Value;
            author      
= doc.SelectSingleNode("AddIn/@author").Value;
            copyright   
= doc.SelectSingleNode("AddIn/@copyright").Value;
            url         
= doc.SelectSingleNode("AddIn/@url").Value;
            description 
= doc.SelectSingleNode("AddIn/@description").Value;
            version     
= doc.SelectSingleNode("AddIn/@version").Value;
        }
 
        
catch (Exception) 
        
...{
            
throw new AddInLoadException("这不是一个标准的addin文件,不包含,作者,版权,地址等信息");
        }

        
        
foreach (object o in doc.DocumentElement.ChildNodes) 
        
...{
            
if (!(o is XmlElement)) 
            
...{
                
continue;
            }

            XmlElement curEl 
= (XmlElement)o;
            
            
switch (curEl.Name) 
            
...{
                
case "Runtime"://动态地加入运行时支持库
                    AddRuntimeLibraries(Path.GetDirectoryName(fileName), curEl);
                    
break;
                
case "Extension"://加入Extension
                    AddExtensions(curEl);
                    
break;
            }

        }

    }

}
相关文章
|
安全 C++ Windows
好工具推荐系列:VC++开发必备神器 -- Dependencies,查看依赖库DLL,支持win10,比depends更好用
好工具推荐系列:VC++开发必备神器 -- Dependencies,查看依赖库DLL,支持win10,比depends更好用
2218 0
好工具推荐系列:VC++开发必备神器 -- Dependencies,查看依赖库DLL,支持win10,比depends更好用
|
SQL IDE 搜索推荐
不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
137 0
不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
|
自然语言处理 Windows
初识VSTO Addin开发
原文:初识VSTO Addin开发 这篇博客将简单介绍一些VSTO Addin开发的知识。 1. VSTO是什么?我们可以用VSTO做什么? VSTO全称Visual Studio Tool for Office,是可以让我们针对现有的Office程序进行功能扩展。
1948 0
|
存储 监控
NAnt 简介
表达式是一种简单而强大的机制,允许写高级的公式,用于 task 的参数和条件式中,这样就可以控制连编过程了。表达式能够访问 project 的属性、调用内建的或者用户定义的functions 。
1602 0