I have a visual studio solution with some (about 20) projects. Source control used for this solution is git.
Those project are built around an existing application server (closed source, binary only). The application server consist of about 300 files / 140 mb. The version of the application server can change 6 times a year (if new features/bugfixes are needed) The developer needs this application server in order to test(integration tests) the development.
Most of those projects have references to some assemblies of this application server (i.e. in order to make a connection). There are about 15 files, for which we create NuGet packages which are hosted by our self.
Some projects may have references to official nugget packages.
Some projects may have references to 3rth party assemblies which are in a “lib” folder and are part of the solution. The lib folder is also part of the git repository.
Question:
Where and how should we put the application server files?
Version 1:
Put into an app folder next to the lib folder and add it to the git repository.
- Pro: Developer can just git checkout and is ready to start the app server. Developer can work offline.
- Cons: Lot of binary files in git repository. Will result in a huge git repository.
Version 2:
Put a robocopy script into post build event, and copy the app server after successful build from a network share or internet.
- Pro: Developer can just git checkout, build solution and is ready to start the app server. Git repository will remain lightweight.
- Cons: Developer need to be connected to the network/internet, otherwise the post build event will fail, and therefore the whole build will fail. It is slow if the developer checkout a lot of different branches, since it will download the application server for every checkout.
Should we go with one of the above mentioned versions? Are there other possibilities/best practices how such a scenario can be solved?