There are a couple of ways to specify where VS.Net looks for the assemblies that you reference in your project when building from the command line.
One way is to specify the ‘HintPath’ for the reference:
<Reference Name = 'MyAssembly.dll' AssemblyName = 'MyAssembly.dll' HintPath = '..\work\samples\assemblies\MyAssembly.dll' />
However, this would require all of the systems that build the application to have the exact same directory structure locally. There are often times when this is not wanted (or needed), such as having a script on a build machine.
In this type of situation, you can use the DEVPATH environment variable, or make use of the Public Assembly folder functionality
To use the DEVPATH environment variable, you would simply add the folder that contains the assembly (e.g. ‘c:\work\samples\assemblies’) to the list of directories. Then, you will need to specify the <developmentMode> element in the machine configuration file:
<configuration> <runtime> <developmentMode developerInstallation='true'> </runtime> </configuration>
This will instruct the CLR to locate the assemblies based on the DEVPATH environment variable.
A less restrictive way to specify the assembly locations is by making use of the Public Assembly Folder functionality. This is done by adding a path to the PublicAssemblies registry key.
Open up the registry, and locate the ‘HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0\AssemblyFolders’ key (for VS.Net 2003, you would look under the ‘…\VisualStudio\7.1\AssembliesFolders’ key). You will see a subkey named ‘PublicAssemblies’. This is where you will want to add additional keys to create your own Public folders. To add your own folder, create a key (e.g. MyAssemblies), and set the default value to be the desired path (e.g. ‘c:\work\samples\assemblies’).
The option you choose will simply depend on your needs.