Как определить путь к папке проекта в .Net? - PullRequest
1 голос
/ 19 марта 2010

У меня есть папка проекта под названием XSL, которая содержит файлы xsl, используемые для преобразования xml. Я использую следующий код для получения файла xsl:

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);

Это работает нормально при отладке, но при развертывании с использованием clickonce и установке я получаю ошибку - «Не удалось найти часть пути {путь к моим пользовательским документам} \ XSL \ ToHtml.xsl». Это действительно нужно искать в {папке установки} \ XSL \ ToHtml.xsl.

Что я должен сделать, чтобы правильно ссылаться на этот путь?

Ответы [ 2 ]

3 голосов
/ 19 марта 2010

Как уже указывалось в ответе DSO, вы не должны использовать или неявно зависеть от Environment.CurrentDirectory, если вы хотите каталог, в котором находится исполняемый файл вашего приложения или сборки.

Однако я бы использовал AppDomain.CurrentDomain.BaseDirectory вместополагаясь на местоположение выполняемой в данный момент сборки.

0 голосов
/ 19 марта 2010

Относительные пути основаны на текущем каталоге (Environment.CurrentDirectory), который ваше приложение не может контролировать. Если вы хотите указать путь к папке установки вашего приложения, используйте это:

string file = Path.Combine(
    System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),
    @"XSL\ToHtml.xsl");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...