As per this diagram I have created a set of basic .Net projects that represent the problem and put it in a bitbucket repository.
The starting point is Tag, Version 1.
The sample consists of 4 separate visual studio solutions, one for each component; the build directory that contains the MsBuild targets; the local Nuget Repository and some Content files.
- Clone Tag – https://bitbucket.org/AdamMills/diamondsarentforever/src/Version1
- Add the Local Repository to Nuget Settings or Update Repository Path in Build/All.Targets
- Run PrepareEnvrionment.bat
The Local Repository
So the build doesn’t regularly download megabytes of packages (I don’t like storing them in VCS) I use a local repository. There are scripts on the interweb to mirror the full NuGet repository, but that seems too much for this little project. There is a nugget extension that can be used to copy individual packages, see here (note if using XP, you’ll need to manually add the LocalAppData Environment Variable)
With this I just maintain and checkin a batch file that downloads each package I need, so I can move or restore the local repository as needed.
I imagine that in the future Nuget will allow you to specify a cache, and then all team members can point to a common cache. Until then….