I'm working on some stuff I've inherited that has a slightly untidy project structure. Some of the projects reference a Primary Interop Assembly (PIA) that it expects to be installed in the GAC. There is a note in the solution folder that says (in summary) "Before building this project, first build X, Y and Z and manually install them in the GAC". Well, that's not really conducive to automation or continuous integration, is it?
I want to make this build work on a TeamCity build server, the build agent will run on a machine that doesn't have the PIAs installed in the Global Assembly Cache (GAC). So the build will fail. I don't want to have to install these PIAs on every build agent machine, I need the build to be self-contained, so it can build from a clean source code checkout, soup to nuts. So the question is twofold.
- How can I structure the build so that it is self contained and doesn't break if there are any dependencies on the GAC?
- If (1) is successful, how will this affect deployment to end-user desktops, where the PIAs must be installed to the GAC?
I would appreciate the expert advice of the Stack Overflow community.