Reputation: 46641
I have a file called settings.xml located at:
c:\solution1\solution1\data\settings.xml
Right now, I am doing:
XDocument doc = XDocument.Load(@"c:\solution1\solution1\settings.xml");
I can't figure how to do it with a relative path.
Upvotes: 1
Views: 8862
Reputation: 150138
If you mean relative to your executable, you can use
string exeLocation = System.Reflection.Assembly.GetExecutingAssembly().CodeBase
Note the frequently suggested
System.Reflection.Assembly.GetExecutingAssembly().Location
will get the path where the assembly is currently located, which can be different e.g. if a shadow copy is being executed.
You can use
string exeDir = System.IO.Path.GetDirectoryName(exeLocation);
to get the executable's directory.
If you want to find a file that is in a data directory under your install location, you could do
string dataFile = Path.Combine(exeDir, "data\settings.xml");
Note that under Windows Vista and later, you will not have write access by default to a directory located under your install directory.
Upvotes: 5
Reputation: 6961
You can also get relative to the current directory it was started from
System.Environment.CurrentDirectory
Upvotes: 0