<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Different Approaches to Add-In Discovery [Jesse Kaplan]</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx</link><description>One of the first problems you try to solve when adding extensibility to your application is that of discovery: how do you find the add-ins to your application? Depending on the application, and what happens to pop into your head at the time, you may go</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Different Approaches to Add-In Discovery</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx#1549714</link><pubDate>Mon, 29 Jan 2007 06:33:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1549714</guid><dc:creator>Simone</dc:creator><description>&lt;p&gt;Hi, my name is Simone, and I'm a member of Subtext core team, and my main role at the moment is developing the support for plugin (or add-in) extensibility.&lt;/p&gt;
&lt;p&gt;I just found your blog and I'm subscribing to it immediately.&lt;/p&gt;
</description></item><item><title>re: Different Approaches to Add-In Discovery</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx#1729363</link><pubDate>Tue, 20 Feb 2007 23:20:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1729363</guid><dc:creator>Gary</dc:creator><description>&lt;p&gt;Hello Simone,&lt;/p&gt;
&lt;p&gt;You might want to look into VSTA&lt;/p&gt;
&lt;p&gt;Visaul Studio Tools for Applications implements System.Addin -based application exstensibility and optionally provides the end user with the VSTA IDE to author their own addins.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Gary Depue, Summit Software&lt;/p&gt;
</description></item><item><title>re: Different Approaches to Add-In Discovery</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx#1748100</link><pubDate>Fri, 23 Feb 2007 19:29:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1748100</guid><dc:creator>William Sullivan</dc:creator><description>&lt;p&gt;Friggin great article. &amp;nbsp;I'm getting deep into extensible architectures right now, so this blog is now #1 on my roll. &amp;nbsp;One point, however--the first example has the line&lt;/p&gt;
&lt;p&gt;foreach (Assembly asm in assemblies)&lt;/p&gt;
&lt;p&gt;but the variable assemblies isnt' defined in the method. &amp;nbsp;Could you fix the example to include its definition? &amp;nbsp;Thanks.&lt;/p&gt;
</description></item><item><title>re: Different Approaches to Add-In Discovery</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx#1748132</link><pubDate>Fri, 23 Feb 2007 19:39:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1748132</guid><dc:creator>William Sullivan</dc:creator><description>&lt;p&gt;Jumping ahead... &amp;nbsp;Part of my research into add-ins included writing one for Lutz' Reflector. &amp;nbsp;His addin architecture consists of a DLL that contains a class that implements the plugin interface IPackage. &amp;nbsp;This interface defines a single method--Load--which has a parameter of type IServiceProvider. &amp;nbsp;Within this method, the addin author requests service managers by passing their type (i.e., GetService(typeof(IWindowManager)) for the window manager), then uses these managers to register different components of the addin (such as event handlers, UI elements, menu items, etc) with Reflector.&lt;/p&gt;
&lt;p&gt;Is this similar to how to the discovery method of the AddIn libraries? &amp;nbsp;If not, what are the pluses and minuses of this method? &amp;nbsp;Thx!&lt;/p&gt;
</description></item><item><title>re: Different Approaches to Add-In Discovery</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx#1749993</link><pubDate>Sat, 24 Feb 2007 03:50:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1749993</guid><dc:creator>CLR Add-In Team</dc:creator><description>&lt;P&gt;For the above examples the assemblies are typically found using code very similar to the following: &lt;/P&gt;&lt;FONT color=#2b91af size=2&gt;
&lt;P&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;[] files = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Directory&lt;/FONT&gt;&lt;FONT size=2&gt;.GetFiles(path, &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"*.dll"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;List&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Assembly&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;gt; assemblies = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;List&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Assembly&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;gt;();&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;foreach&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; file &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;FONT size=2&gt; files)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assemblies.Add(&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Assembly&lt;/FONT&gt;&lt;FONT size=2&gt;.LoadFrom(file));&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;As far as Lutz's reflector there are actually two different questions here. The first is about how reflector actually discovers add-ins and the second is about what sort of object model the application provides. &lt;/P&gt;
&lt;P&gt;On the discovery question, based on the docs online about writing reflector add-ins, it looks like it is using something very similar to example #1 except the user may point reflector at a specific assembly rather than a directory. &lt;/P&gt;
&lt;P&gt;As far as the object model is concerned the pattern reflector uses is actually very common. With this object model the host is actually providing a service to the add-in rather than the other way around. The host activates the add-in, passes it a reference to the host object, and then lets the add-in do its thing until shutting it down. Office and Visual Studio use the same basic pattern for many of their extension points: see IDTExtensibility2. Our System.AddIn model is completely agnostic and lets the host define any object model it wishes. We don’t currently have samples demonstrating this but they are coming. &lt;/P&gt;
&lt;P&gt;--Jesse Kaplan&lt;/P&gt;</description></item><item><title>re: Different Approaches to Add-In Discovery</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx#1762863</link><pubDate>Mon, 26 Feb 2007 16:18:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1762863</guid><dc:creator>William Sullivan</dc:creator><description>&lt;p&gt;Cool, thanks. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Another question--AddIn vs. the provider model of ASP.NET 2.0. &amp;nbsp;The setup would be similar to the third pattern of discovery (manifest) of the first example, but what about the implementation?&lt;/p&gt;
&lt;p&gt;Keep it coming guys, I love this stuff. &amp;nbsp;&lt;/p&gt;
</description></item><item><title>Behind the Scenes of Add-In Discovery in the Orcas System.AddIn [Jesse Kaplan]</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx#1888477</link><pubDate>Thu, 15 Mar 2007 19:57:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1888477</guid><dc:creator>CLR Add-In Team Blog</dc:creator><description>&lt;p&gt;Details about the System.AddIn’s Implementation of Add-In Discovery Last time we discussed several common&lt;/p&gt;
</description></item><item><title>re: Different Approaches to Add-In Discovery [Jesse Kaplan]</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx#7100203</link><pubDate>Sun, 13 Jan 2008 16:40:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7100203</guid><dc:creator>Dod</dc:creator><description>&lt;p&gt;Is it possible to query for add-ins using the custom attribute approach?&lt;/p&gt;
&lt;p&gt;I was trying to define some custom attribute named &amp;quot;MyAddInCategory(string)&amp;quot;, and to put it on the addin clas where I'm implementing the abstract view class.&lt;/p&gt;
&lt;p&gt;Unfortunately, it seems as if the proxy does not forward the attribute, so when I'm creating an instance of the package later on and trying to GetType().GetCustomAttribute(typeof(MyAddInCategory)... , I'm getting no attributes.&lt;/p&gt;
&lt;p&gt;Do you have an easy way to overpower this?&lt;/p&gt;
</description></item><item><title>How to: Build System.AddIns using Pipeline Builder</title><link>http://blogs.msdn.com/clraddins/archive/2007/01/26/different-approaches-to-add-in-discovery.aspx#8358994</link><pubDate>Sat, 05 Apr 2008 04:19:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8358994</guid><dc:creator>Harry Soetardjo</dc:creator><description>&lt;p&gt;How to: Build System.AddIns using Pipeline Builder&lt;/p&gt;
</description></item></channel></rss>