I have a Visual Studio 2010 C# project which creates an .exe and this project is using some 3rd party class library.
My project is located in: /MyFramWork/tests/test1
3rd party library is located at: /MyFrameWork/bin/utils/
I am adding the reference to the library by using References->Add Reference->Browse. I can see that in the project file all is fine:
….\bin\utils\log4net.dll
False
I would like to reference the 3rd party library without using the option “Copy Local”. However if I don’t use the option, the library is not found and I get an exception.
My question is: Is there a way to specify that the 3rd party library should be found at ….\bin\utils. It seems that when the .exe gets build the information from the .csproj gets lost.
By default, .NET apps look for their dependencies in only two places: the EXE directory, and the GAC (Global Assembly Cache).
You have three choices:
gacutil. This might be a good choice if your dependency isn’t going to change, is going to be in a different location on every development machine (i.e. if relative paths won’t work well), and if you want to use it from many different projects. But it’s a major pain if the dependency is still under active development and changing frequently. You’ll also need to make sure to put the DLL into the GAC on every computer you deploy your app to.Normally, you would just use Copy Local; it’s a very sensible default. You should need a fairly compelling reason to do anything different.