Абсолютный путь требуется?


Обычно, когда я создаю приложение на C#, которое может обрабатывать параметры командной строки, если эти параметры являются строками путей к файлам, я могу использовать относительные пути, а также абсолютные пути для ссылки на конкретный файл на моем компьютере и использовать его в программе.

В моем последнем проекте мое приложение не работает, если я даю ему относительный путь из командной строки. Но в режиме отладки в VS 2010 он переваривает относительные пути. Из командной строки требуется абсолютный путь к работа.

2 3

2 ответа:

Вам нужно установить рабочий каталог. Смотрите: Каталог.Метод SetCurrentDirectory

Пример :

System.IO.Directory.SetCurrentDirectory( System.AppDomain.CurrentDomain.BaseDirectory );

В отладочной сборке текущий каталог по умолчанию имеет значение debug\bin.

Задает рабочий каталог отлаживаемой программы. В Visual C# рабочим каталогом является каталог, в котором приложение запускается из \bin\debug. по умолчанию.

Http://msdn.microsoft.com/en-us/library/2kf0yb05.aspx

Вы также можете получить путь сборки с помощью Assembly.GetEntryAssembly () или Сборка.GetExecutingAssembly () , а затем с помощью свойства Location или свойства CodeBase.

Относительный путь можно превратить в абсолютный путь самостоятельно, вот так:

if (!Path.IsPathRooted(path))
    path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + path;

Или измените текущий каталог на исполняемый путь:

string exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Directory.SetCurrentDirectory(exePath);