AddInManager
This document describes how the AddInManager works and how you can make it install your AddIns.
There are three different types of AddIns (the difference is the location of the .addin-file):
1.	Pre-installed AddIns
- are installed in “Program files\SharpDevelop\2.0\AddIns”
- cannot be updated or uninstalled by the AddInManager
- they are only shown in the AddInManager when the checkbox “show pre-installed AddIns” is checked, they can only the disabled and enabled
2.	External AddIns
- installed in any other directory (outside the SharpDevelop-directory)
- is registered in the AddInManager
- cannot be updated inside the AddInManager
- uninstalling only deregisters the AddIn, but does not delete the files
3.	User AddIns
- installed in the user profile (Application Data\.ICSharpCode\SharpDevelop2\AddIns)
- are distributed inside a “.sdaddin” package file (AddInManager extracts the file into the user profile)
- can be updated (by installing the new version inside the AddInManager)
- uninstalling deletes the files from the user profile

We recommend developing AddIns by compiling them into the AddIns directory of a debug version of SharpDevelop (so they get picked up as pre-installed AddIns).
When releasing your AddIn, you should distribute the AddIn source code as a .zip and the binary, compiled AddIn as .sdaddin package file.
How to make your AddIns ready for the AddInManager
If you have created an AddIn using the template, it will not show up in the AddInManager, not even as pre-installed AddIn. This is because the AddInManager only supports AddIns that have an Identity. You should create one for every AddIn that you write, but you have to ensure that it is unique. SharpDevelop will not load two AddIns that use the same identity. The identity is the internal name of the AddIn.
You can use any name, but it is highly recommended that you use a naming pattern like namespaces: “AuthorName.AddInName”. You should use the same name as identity that you use as namespace for your AddIn.
All AddIns maintained by the SharpDevelop team use “ICSharpCode.AddInName”. Don't use “ICSharpCode” for your AddIns; it is reserved for the SharpDevelop team! The reason why the default template does not include the identity section is because you really should think about which name you are going to use.

Now you can modify your .addin file to include the identity:
<AddIn name = "My new AddIn (display name)"
       author = "Me"
       copyright = "GNU General Public License"
       description = "Provide a little description about your AddIn, it is displayed in the AddInManager">
    <Manifest>
        <Identity name="ExampleAuthor.AddInName" version="@MyAddIn.dll"/>
        <Dependency addin = "SharpDevelop" version = "2.0"/>
    </Manifest>
    <Runtime> ... </Runtime>
    <Path ...>
</AddIn>

After adding the <Manifest> section, your AddIn will show up in the AddInManager:

For the attribute “version”, you can directly specify a version number or use the syntax “@filename” to get the version from the file.
For your AddIns, make sure you use a new version number for every release so that other AddIns can check for specific versions of your AddIn. The easiest way to do this is to use the auto-numbering of the C# compiler together with version=“@MyAddIn.dll”.

As you can see, you can specify dependencies to other AddIns in the manifest section:
<Dependency addin = "TargetAddInName" version = "1.0.1-1.0.3"/>
For the AddIn attribute, you use the identity name of the other AddIn. "SharpDevelop" is the main SharpDevelop application. SharpDevelop itself is also an AddIn, but in this special case we don’t use the “ICSharpCode” prefix. Another example is:
<Dependency addin = "ICSharpCode.FormsDesigner"/>
The official AddIns don’t have any version number; please check the version of SharpDevelop instead.
You should always add a version dependency on SharpDevelop: 
<Dependency addin = "SharpDevelop" version = "2.0"/>
Future versions of SharpDevelop (2.1, 3.0) are not compatible because of renamed classes or namespaces or other architecture changes. The dependency prevents installing the AddIn with the wrong SharpDevelop version, so SharpDevelop won’t crash when trying to load an incompatible AddIn.
version="2.0" will match any version 2.0.*.*. You can use version="2.0.1" to look for 2.0.1.*, or you can use a range of versions: version="2.0.0.850-2.0.3" will work with version 2.0.0.850 or above, any version 2.0.1, 2.0.2, 2.0.3, but not with 2.0.4.
How to create .sdaddin installation packages
.sdaddin installation files make it really easy for the user to install AddIns – in most cases, they just have to double-click the file.
Creating these files is easy. Just compile the final version of your AddIn (maybe assign it a new version number). You’re probably testing it as “pre-installed” AddIn inside the SharpDevelop\AddIns directory; so you have to do only one thing to create the package: zip the files.
Create a .zip archive containing the files “MyAddIn.addin” and “MyAddIn.dll”. You can also include other files (required libraries, .pdb debug information, etc.). Rename the .zip to use the extension .sdaddin. That’s all; your installation package is ready.