I've been using the Composite Application Library guidance for long time.
One things that I think is not well covered there or in the sample application themselves is how to build and deploy the application.
1. Because of the dynamic nature of the application there is no static references between the application host (exe) and the modules (dlls). This create the first problem:
How to get the module build products (dll, resources, etc) to the shell application's build directory?
The solution you have in your sample application (also my current solution) is to have a Post-build event (go into each module's project properties page and select Build Events tab) of xcopy from the bin directory of the module to the bin directory of the
This works, but don't you think have MSBuild task will be much better. For start, since this done "out-of-band" when we run CleanSolution task, it does not clean the copied module files from the shell project directory since it doesn't know about
2. ClickOnce deployment: due to the first things we talked about, the current ClickOnce generation script of MSBuild relay only on static references, and so when we create ClickOnce installation for our shell application we only get the shell applicaiton,
without the modules.
I think it's time to create some kind of deployment project in which we will be able to specify which shell project as well as module project we want to package to create our deployment project.
In the same deployment project we will be able to specify the ClickOnce parameters such as name, urls, version etc.
This will give us the ability to have several different deployment project, for each combination of modules.
Hope this will make Prism even better than it already is,