I will try to answer both questions separately.
About common shared DLLs
If I understand correctly you want to have multiple applications use the same common assembly, and have them continue working even if the common assembly is modified. I tested this by creating a common service
project and referencing it from two Prism Quickstarts. To get the new assembly to work without building, all you have to do is replace (in my case copy/paste) in the required path. Take into account that the application has to be restarted
when the new assembly is deployed.
About reusing View/ViewModel code
One of the benefits of having modular, decoupled applications, like those created following the guidelines of the Composite Application Guidance, is reusability.
If your goal is to create base implementations of Views/View Models to be shared across the application, you should place them in an infrastructure project and reference to it from each of your modules.
If you want to have a single place (perhaps one or multiple assemblies) which would hold the different views of various applications, you should try to avoid having views from different modules in the same assembly,
as this would reduce the decoupling between different modules. A better and more decoupled approach could be reusing modules between the applications (if possible). As each module is decoupled from other modules, there is no concern about using it in multiple
applications and get the functionality you require.