<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=Dynamic_Plugin_Quickstart</id>
		<title>Dynamic Plugin Quickstart - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=Dynamic_Plugin_Quickstart"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;action=history"/>
		<updated>2026-05-11T23:32:50Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=28716&amp;oldid=prev</id>
		<title>MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=28716&amp;oldid=prev"/>
				<updated>2012-03-04T06:21:45Z</updated>
		
		<summary type="html">&lt;p&gt;Robot: Replacing &amp;#039;OpenSim&amp;#039; to &amp;#039;OpenSimulator&amp;#039;, which is the precise name&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 06:21, 4 March 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''NOTE: This tutorial now refers to a very old &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;OpenSim &lt;/del&gt;and so is only partially useful. See [[IRegionModule]] for something more up to date.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''NOTE: This tutorial now refers to a very old &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;OpenSimulator &lt;/ins&gt;and so is only partially useful. See [[IRegionModule]] for something more up to date.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At this stage, all that is needed is &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider&amp;lt;/code&amp;gt; defined and present in &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.exe&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At this stage, all that is needed is &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider&amp;lt;/code&amp;gt; defined and present in &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.exe&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''PLEASE NOTE''': embedding XML manifests in .exe assemblies doesn't work. The .addin.xml file must reside in a directory that Mono.Addins will scan for plugins. Currently in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;OpenSim &lt;/del&gt;this is the current working directory (&amp;lt;code&amp;gt;bin/&amp;lt;/code&amp;gt;). Ideally all applications would consist of an .exe assembly and a .dll assembly which contains the embedded XML manifest.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''PLEASE NOTE''': embedding XML manifests in .exe assemblies doesn't work. The .addin.xml file must reside in a directory that Mono.Addins will scan for plugins. Currently in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;OpenSimulator &lt;/ins&gt;this is the current working directory (&amp;lt;code&amp;gt;bin/&amp;lt;/code&amp;gt;). Ideally all applications would consist of an .exe assembly and a .dll assembly which contains the embedded XML manifest.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Defining Extensions ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Defining Extensions ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=28085&amp;oldid=prev</id>
		<title>MakoBot: Robot: Cosmetic changes</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=28085&amp;oldid=prev"/>
				<updated>2012-03-04T02:59:01Z</updated>
		
		<summary type="html">&lt;p&gt;Robot: Cosmetic changes&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 02:59, 4 March 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''NOTE: This tutorial now refers to a very old OpenSim and so is only partially useful. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;See [[IRegionModule]] for something more up to date.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''NOTE: This tutorial now refers to a very old OpenSim and so is only partially useful. See [[IRegionModule]] for something more up to date.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=23304&amp;oldid=prev</id>
		<title>MakoBot: Removed 'Template:' prefix from template includings and/or changed external-link into internal-link</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=23304&amp;oldid=prev"/>
				<updated>2011-06-10T14:22:29Z</updated>
		
		<summary type="html">&lt;p&gt;Removed &amp;#039;Template:&amp;#039; prefix from template includings and/or changed external-link into internal-link&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 14:22, 10 June 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;__NOTOC__&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;__NOTOC__&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Template:&lt;/del&gt;Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''NOTE: This tutorial now refers to a very old OpenSim and so is only partially useful.&amp;#160; See [[IRegionModule]] for something more up to date.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''NOTE: This tutorial now refers to a very old OpenSim and so is only partially useful.&amp;#160; See [[IRegionModule]] for something more up to date.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=22068&amp;oldid=prev</id>
		<title>Justincc at 21:28, 6 May 2011</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=22068&amp;oldid=prev"/>
				<updated>2011-05-06T21:28:18Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:28, 6 May 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;__NOTOC__&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;__NOTOC__&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Template:Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Template:Quicklinks}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'''NOTE: This tutorial now refers to a very old OpenSim and so is only partially useful.&amp;#160; See [[IRegionModule]] for something more up to date.'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Justincc</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=12898&amp;oldid=prev</id>
		<title>Ideia Boa at 14:47, 21 May 2009</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=12898&amp;oldid=prev"/>
				<updated>2009-05-21T14:47:16Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 14:47, 21 May 2009&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;__NOTOC__&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{{Template:Quicklinks}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A quick guide to writing plugins. Please refer to [[How to create a dynamic plugin]] for more in-depth information.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A quick guide to writing plugins. Please refer to [[How to create a dynamic plugin]] for more in-depth information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ideia Boa</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=11299&amp;oldid=prev</id>
		<title>Mikem at 02:06, 10 March 2009</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=11299&amp;oldid=prev"/>
				<updated>2009-03-10T02:06:02Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 02:06, 10 March 2009&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A quick guide to writing plugins. Please refer to [[How to create a dynamic plugin]] for more in-depth information.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A quick guide to writing plugins. Please refer to [[How to create a dynamic plugin]] for more in-depth information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;== Defining Extension Points &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Defining Extension Points ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Extension points describe the location in the program where external modules can be plugged-in at runtime. Extension points can be defined in one of two ways:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Extension points describe the location in the program where external modules can be plugged-in at runtime. Extension points can be defined in one of two ways:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''PLEASE NOTE''': embedding XML manifests in .exe assemblies doesn't work. The .addin.xml file must reside in a directory that Mono.Addins will scan for plugins. Currently in OpenSim this is the current working directory (&amp;lt;code&amp;gt;bin/&amp;lt;/code&amp;gt;). Ideally all applications would consist of an .exe assembly and a .dll assembly which contains the embedded XML manifest.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''PLEASE NOTE''': embedding XML manifests in .exe assemblies doesn't work. The .addin.xml file must reside in a directory that Mono.Addins will scan for plugins. Currently in OpenSim this is the current working directory (&amp;lt;code&amp;gt;bin/&amp;lt;/code&amp;gt;). Ideally all applications would consist of an .exe assembly and a .dll assembly which contains the embedded XML manifest.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;== Defining Extensions &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Defining Extensions ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Extensions that implement extension points are defined in a similar way. Below is an example corresponding XML file describing a plugin for the above extension point:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Extensions that implement extension points are defined in a similar way. Below is an example corresponding XML file describing a plugin for the above extension point:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 82:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 82:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''NOTE''': this XML file also defines another extension point, meaning that this plugin also takes another plugin. Note the '''isroot''' attribute in the topmost '''Addin''' element is omitted.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''NOTE''': this XML file also defines another extension point, meaning that this plugin also takes another plugin. Note the '''isroot''' attribute in the topmost '''Addin''' element is omitted.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;== Source Code &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Source Code ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The relevant code which ends up in &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.exe&amp;lt;/code&amp;gt; and loads the AssetStorage plugin looks something like this:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The relevant code which ends up in &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.exe&amp;lt;/code&amp;gt; and loads the AssetStorage plugin looks something like this:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mikem</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=11298&amp;oldid=prev</id>
		<title>Mikem: /* Defining Extension Points */</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=11298&amp;oldid=prev"/>
				<updated>2009-03-10T02:05:11Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Defining Extension Points&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 02:05, 10 March 2009&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 37:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 37:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At this stage, all that is needed is &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider&amp;lt;/code&amp;gt; defined and present in &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.exe&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At this stage, all that is needed is &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider&amp;lt;/code&amp;gt; defined and present in &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.exe&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'''PLEASE NOTE''': embedding XML manifests in .exe assemblies doesn't work. The .addin.xml file must reside in a directory that Mono.Addins will scan for plugins. Currently in OpenSim this is the current working directory (&amp;lt;code&amp;gt;bin/&amp;lt;/code&amp;gt;). Ideally all applications would consist of an .exe assembly and a .dll assembly which contains the embedded XML manifest.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Defining Extensions ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Defining Extensions ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mikem</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=11297&amp;oldid=prev</id>
		<title>Mikem: New page: A quick guide to writing plugins. Please refer to How to create a dynamic plugin for more in-depth information.  === Defining Extension Points ===  Extension points describe the locati...</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=Dynamic_Plugin_Quickstart&amp;diff=11297&amp;oldid=prev"/>
				<updated>2009-03-10T02:02:21Z</updated>
		
		<summary type="html">&lt;p&gt;New page: A quick guide to writing plugins. Please refer to &lt;a href=&quot;/wiki/How_to_create_a_dynamic_plugin&quot; title=&quot;How to create a dynamic plugin&quot;&gt;How to create a dynamic plugin&lt;/a&gt; for more in-depth information.  === Defining Extension Points ===  Extension points describe the locati...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;A quick guide to writing plugins. Please refer to [[How to create a dynamic plugin]] for more in-depth information.&lt;br /&gt;
&lt;br /&gt;
=== Defining Extension Points ===&lt;br /&gt;
&lt;br /&gt;
Extension points describe the location in the program where external modules can be plugged-in at runtime. Extension points can be defined in one of two ways:&lt;br /&gt;
&lt;br /&gt;
* decorating interfaces, classes or methods with attributes in the source code&lt;br /&gt;
* embedding an XML file, called a manifest, as a resource in an assembly&lt;br /&gt;
&lt;br /&gt;
In OpenSim, the preferred method is to embed an XML manifest in the assembly. Below is an example manifest defining one extension point in the AssetInventoryServer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Addin id=&amp;quot;OpenSim.Grid.AssetInventoryServer&amp;quot; isroot=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Runtime&amp;gt;&lt;br /&gt;
        &amp;lt;Import assembly=&amp;quot;OpenSim.Grid.AssetInventoryServer.exe&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;Import assembly=&amp;quot;OpenSim.Framework.dll&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Runtime&amp;gt;&lt;br /&gt;
    &amp;lt;ExtensionPoint path=&amp;quot;/OpenSim/AssetInventoryServer/AssetStorageProvider&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ExtensionNode name=&amp;quot;Plugin&amp;quot;&lt;br /&gt;
                       type=&amp;quot;OpenSim.Framework.PluginExtensionNode&amp;quot;&lt;br /&gt;
                       objectType=&amp;quot;OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/ExtensionPoint&amp;gt;&lt;br /&gt;
&amp;lt;/Addin&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This manifest contains the following elements:&lt;br /&gt;
&lt;br /&gt;
* '''Addin'''&lt;br /&gt;
** '''id''': an identifier describing this addin, used for dependencies in other addins.&lt;br /&gt;
** '''isroot''': set to '''true''' if this manifest does not define any ''extension nodes'', otherwise can be left out completely.&lt;br /&gt;
** '''version''': a version number, also used for dependencies in other addins.&lt;br /&gt;
* '''Runtime''': a list of assemblies that need to be imported by Mono.Addins as it builds the plugin repository. In the example, the &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.exe&amp;lt;/code&amp;gt; assembly contains the definition for &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider&amp;lt;/code&amp;gt; interface, while &amp;lt;code&amp;gt;OpenSim.Framework.dll&amp;lt;/code&amp;gt; contains a definition for &amp;lt;code&amp;gt;OpenSim.Framework.PluginExtensionNode&amp;lt;/code&amp;gt;.&lt;br /&gt;
* '''ExtensionPoint'''&lt;br /&gt;
** '''path''': the location of the extension point in the extension point tree (see [http://www.mono-project.com/Introduction_to_Mono.Addins#Extension_Paths Extension Paths]).&lt;br /&gt;
* '''ExtensionNode'''&lt;br /&gt;
** '''name''': a name describing this extension node.&lt;br /&gt;
** '''type''': a class that handles plugin loading, this should probably be &amp;lt;code&amp;gt;OpenSim.Framework.PluginExtensionNode&amp;lt;/code&amp;gt; unless you know what you're doing.&lt;br /&gt;
** '''objectType''': an instance of this object will be loaded into this extension point at runtime. This is probably what your plugin will instantiate/subclass/implement.&lt;br /&gt;
&lt;br /&gt;
At this stage, all that is needed is &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider&amp;lt;/code&amp;gt; defined and present in &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.exe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Defining Extensions ===&lt;br /&gt;
&lt;br /&gt;
Extensions that implement extension points are defined in a similar way. Below is an example corresponding XML file describing a plugin for the above extension point:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Addin id=&amp;quot;OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim&amp;quot; version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Runtime&amp;gt;&lt;br /&gt;
        &amp;lt;Import assembly=&amp;quot;OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;Import assembly=&amp;quot;OpenSim.Data.dll&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Runtime&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Dependencies&amp;gt;&lt;br /&gt;
        &amp;lt;Addin id=&amp;quot;OpenSim.Grid.AssetInventoryServer&amp;quot; version=&amp;quot;0.1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Dependencies&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;ExtensionPoint path = &amp;quot;/OpenSim/AssetData&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ExtensionNode name=&amp;quot;Plugin&amp;quot;&lt;br /&gt;
                       type=&amp;quot;OpenSim.Framework.PluginExtensionNode&amp;quot;&lt;br /&gt;
                       objectType=&amp;quot;OpenSim.Data.IAssetDataPlugin&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/ExtensionPoint&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Extension path=&amp;quot;/OpenSim/AssetInventoryServer/AssetStorageProvider&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Plugin id=&amp;quot;OpenSimAssetStorage&amp;quot;&lt;br /&gt;
                provider=&amp;quot;OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll&amp;quot;&lt;br /&gt;
                type=&amp;quot;OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.OpenSimAssetStoragePlugin&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Extension&amp;gt;&lt;br /&gt;
&amp;lt;/Addin&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The elements (not in the same order as in the file) are:&lt;br /&gt;
&lt;br /&gt;
* '''Addin'''&lt;br /&gt;
** '''id''': a string identifying this plugin, can be used for dependencies in other plugins.&lt;br /&gt;
** '''version''': a version of this plugin, also used for dependencies in other plugins.&lt;br /&gt;
* '''Runtime''': a list of assemblies to import at runtime while Mono.Addins builds up the plugin registry. In this case, &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll&amp;lt;/code&amp;gt; contains the definition for &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.OpenSimAssetStoragePlugin&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;OpenSim.Framework.dll&amp;lt;/code&amp;gt; contains a definition for &amp;lt;code&amp;gt;OpenSim.Framework.PluginExtensionNode&amp;lt;/code&amp;gt;.&lt;br /&gt;
* '''Dependencies''': describes other addin(s) required to be loaded before this addin can be loaded. The '''id''' and '''version''' is used.&lt;br /&gt;
* '''Extension'''&lt;br /&gt;
** '''path''': the path along the extension point tree to the extension point which this extension implements.&lt;br /&gt;
** '''Plugin'''&lt;br /&gt;
*** '''id''': a string identifying this particular extension. Pretty much an arbitrary string.&lt;br /&gt;
*** '''provider''': another property of the extension, which can be an arbitrary string. In OpenSim, the convention seems to be to place the assembly name here which contains this plugin.&lt;br /&gt;
*** '''type''': the fully qualified class name to be instantiated which implements the extension. In the code, this class will inherit from/implement the class/interface specified in '''objectType''' attribute of the '''ExtensionPath'''.&lt;br /&gt;
* '''NOTE''': this XML file also defines another extension point, meaning that this plugin also takes another plugin. Note the '''isroot''' attribute in the topmost '''Addin''' element is omitted.&lt;br /&gt;
&lt;br /&gt;
=== Source Code ===&lt;br /&gt;
&lt;br /&gt;
The relevant code which ends up in &amp;lt;code&amp;gt;OpenSim.Grid.AssetInventoryServer.exe&amp;lt;/code&amp;gt; and loads the AssetStorage plugin looks something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;private IAssetStorageProvider LoadAssetStorageProvider(string addinPath)&lt;br /&gt;
{&lt;br /&gt;
    PluginLoader&amp;lt;IAssetStorageProvider&amp;gt; loader = new PluginLoader&amp;lt;IAssetStorageProvider&amp;gt;();&lt;br /&gt;
    loader.Add(addinPath);&lt;br /&gt;
&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
        loader.Load();&lt;br /&gt;
    }&lt;br /&gt;
    catch (PluginNotInitialisedException e)&lt;br /&gt;
    {&lt;br /&gt;
        // log the error, clean up, exit if needed, etc&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return loader.Plugin;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Then, from elsewhere in the code:&lt;br /&gt;
IAssetStorageProvider StorageProvider = LoadAssetStorageProvider(&amp;quot;/OpenSim/AssetInventoryServer/AssetStorageProvider&amp;quot;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;PluginLoader&amp;lt;/code&amp;gt; class lives in &amp;lt;code&amp;gt;OpenSim.Framework&amp;lt;/code&amp;gt;; have a look through the code for more plugin loading options.&lt;/div&gt;</summary>
		<author><name>Mikem</name></author>	</entry>

	</feed>