How to get the current directory on a class library?

nandos picture nandos · Apr 22, 2009 · Viewed 27.8k times · Source

I've been looking around but I have not found a solution for this problem: I want to create a class library that has a configuration file under a sub-directory called Configuration. I want that class library to be deployed anywhere and I want it to find its configuration files by knowing its own location.

Previous attempts with Assembly.GetExecutingAssembly().Location did not work.
It would return temp locations such as

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\7c00e0a3\38789d63\assembly\dl3\9c0a23ff\18fb5feb_6ac3c901

instead of the desired

bin/Configuration path.

So:

  1. Can a class library be aware of its own location on disk?
  2. How would I go about witting test scripts for this functionality since it seems that directories change based on how you run the app (debugging inside VS, deploying on IIS, etc)

Answer

Reed Copsey picture Reed Copsey · Apr 22, 2009

This should work -

string assemblyFile = (
    new System.Uri(Assembly.GetExecutingAssembly().CodeBase)
).AbsolutePath;