Maybe this can sound you a bit obvious, but it’s something that I have found in several teams / projects, and I think it’s worth to point it out.
When you start your own project as a solo developer, or build a small team to work together it’s quite common to agree on downloading the latest version of the Silverlight toolkit and install it… so far so good, everybody is compiling the application and able to work with the source code, … after some weeks you start having issues:
- Some developers decided to install a more recent version of the toolkit, current source code version need some fixes in order to compile… when developers deploy that fixes, other users get problems when trying to compile the code with the older version.
- New colleagues join into the group, they need to know which exact version to install from the toolkit (installing the latest… means maybe code won’t compile).
- If you are an open source developers, your code will be downloaded by other users that maybe even don’t have the toolkit installed… so they will try to compile your samples check that they get compiling errors and stop digging into your project (no time to loose).
- Sometimes you are working on more than on project, and not all of them are referencing the same version of the toolkit.
What can I do to avoid this issues? Well… the solution is pretty easy:
- Create a lib file in your source code repository and include there the DLL’s of the toolkit that you are using.
- Reference that DLL’s in your project (include it just browsing for them and choosing the DLL’s).
By doing this:
- Users won’t have to install certain toolkit version their machine to compile your code.
- You won’t have to rely on developers having one exact version of the toolkit installed (this references will be read from the lib folder that you have defined).
- If you upgrade your project to use a newer version of the toolkit you will only need to copy the new versions DLL in the lib folder, refresh references and ask your developers to make a get latest version.
- You can build projects that uses different versions of the toolkit, each project will read the right DLL version from the lib folder.