paul
paul

Reputation: 13516

How to determine path to project folder in .Net?

I have a project folder called XSL which contains xsl files used for transforming xml. I use the following code to fetch an xsl file:

string html = @"c:\temp\export.html";
XslCompiledTransform transform = new XslCompiledTransform();
Uri uri = new Uri(@"XSL\ToHtml.xsl", UriKind.Relative);
transform.Transform(CurrentXmlFile, html);
System.Diagnostics.Process.Start(html);

This works ok when debugging but when I deploy using clickonce and install it, I get an error - 'Could not find part of the path {my user documents path}\XSL\ToHtml.xsl'. It really needs to be looking in {installation folder}\XSL\ToHtml.xsl.

What must I do to correctly reference this path?

Upvotes: 1

Views: 450

Answers (2)

João Angelo
João Angelo

Reputation: 57698

As already stated in DSO's answer, you should not use or implicitly depend of Environment.CurrentDirectory when you want the directory where your application executable or assemblies are located.

However I would use AppDomain.CurrentDomain.BaseDirectory instead of relying on the location of the currently executing assembly.

Upvotes: 3

dso
dso

Reputation: 9580

Relative paths are based off the current directory (Environment.CurrentDirectory), which your app has no control over. If you want to base a path off your app's install folder use this:

string file = Path.Combine(
    System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),
    @"XSL\ToHtml.xsl");

Upvotes: 0

Related Questions