views:

335

answers:

4

There are some updates with .NET 3.0 concerning how to create and use add-ins for your own applications. I read about some "pipeline" you have to create for the communication between add-in and host-application but couldn't find further information about it.

How would you made an add-in functionality in an application with .NET 3.0/3.5?

Additional information if necessary: The host application is made with WPF and some general functionality. Each add-in should add a own register-tab to a given container with their own content (buttons, textfields, ...) and methods to extend the host-application.

Thanks in advance!

+1  A: 

To get started, check out http://www.codeplex.com/clraddins for samples and a pipeline builder tool.

Daniel Plaisted
+2  A: 

In addition to Daniels codeplex link, Jason He also has a nice wee series on using the System.AddIn namespace when developing Paint.NET starting here -

http://blogs.msdn.com/zifengh/archive/2007/01/04/addin-model-in-paint-net-1-introduction.aspx

Kev
+1  A: 

There is also available now the Managed Extensibility Framework (www.codeplex.com/mef) which allows you to leverage a rich plugin platform.

You may also find that dependency injection is along the lines of something you could use (Unity, StructureMap to name just two).

You could create a plugin platform on top of a dependency injection framework, though a dedicated plugin platform like MEF will likely be easier to implement.

cfeduke
+1  A: 

Definitely check out the Managed Extensibility Framework at www.codeplex.com/mef. It's a framework that helps with creating extensible applications. It takes care of all the plumbing when creating a pluggable app. I'm currently writing a series of articles that show the basic functionality of mef at http://www.jenswinter.com/?tag=/mef. But the articles are in German though.

Another framework you should give a try is the CompositeWpf (f.k.a. Prism). It let's you create composite WPF applications. Your app will consist of a shell app and several module projects that are wired together and hooked into the shell.

FantaMango77
"But the articles are in German though." - Thats fine.. makes them easier to read / understand ;) *german native speaker, too*
Anheledir