>What is involved in loading external compnents in an application, rather than have them compiled into the app?
>
>I was thinking of creating add-ons that could be purchased seperatly and loaded at startup.
If you compartmentalize them into their own assemblies, and don't need to be able to swap out those components while the application is up and running, it's reasonably simple. You just need to be aware of component interdependencies so you ship the correct assemblies and plan enough extensible entry points things can be tied together nicely. You'll also probably want to create a standard interface that your types implement so you have a common way of calling into them, ex. all of them have something like an "Execute" method. In the Execute you can do things like add new menu options, etc. to make it seemless for the end user.