How can we make our build process (Dev Studio 2005) for a .NET project completely independent of what is installed on the GAC on the particular machine that it is running on.
Here's the problem we're trying to solve: Depending on what assemblies happen to have been installed into the GAC, our build process generates different .NET assemblies in the output directory that we then use to build a .MSI
Presumably this is because dev studio is assuming that, because it's installed in the GAC, it should not be installed as part of our product.
We want to disable this behaviour so that all .NET assemblies that are referenced, directly or indirectly by our project, get copied into the output directory of the project (excepting the .NET 2.0 runtime standard assemblies).
For direct assembly references, I am aware that setting "Copy Local=True" makes this work.
However, this isn't working for indirect assembly references.
i.e. One of our projects references an assembly called "A.dll", which depends on another assembly called "B.dll" which is in the same directory as "A.dll". On machines in which "B.dll" is not installed in the GAC, both A.dll and B.dll are copied to the output directory in the Dev studio build process. This is what we want.
But on machines on which B.dll is installed into the GAC, even if "Copy Local = True" for A.dll, B.dll does not get copied into the output directory.