Should I include dependencies when I do releases for my common projects such as CommonUtils or should I simply specify which dependencies should be referenced when they are to be used?
I always create two versions (might not be the perfect solution). One with only my own code and 3-tier party dll used. And a bigger version with all the Framework. This way if it's deploy on a new machine I know I will be fine. Otherwise (if update or on a machine I know that dependencies DLL are already there) I use the lite release.
I would always include dependencies where legal and practical.
Dependencies will not always be in the GAC and you will be easing the deployment of your software.
I would include the dependencies with your release. When you release you want to control how your application executes and how it behaves. If a user is required to install the dependencies, then they might choose a compatible version, however it might not do X or do X differently. Which will change the way your application behaves and increase application support and maintenance.
You users do not want the work if figuring out your dependencies.
- What packages do I need?
- What if it's not available? (dead server, provider out of business)
- What version of each one do I need?
- What if it's not available? (new version)
- How do I download each one?
- How do I install each one?
Protect your software from disappearing/unavailable dependencies. Protect your users from the pain of figuring this stuff out.
Make your uninstaller do the right thing: remove things you installed, if they're not shared. (That can be hard).