Абсолютный путь требуется?
Обычно, когда я создаю приложение на C#, которое может обрабатывать параметры командной строки, если эти параметры являются строками путей к файлам, я могу использовать относительные пути, а также абсолютные пути для ссылки на конкретный файл на моем компьютере и использовать его в программе.
В моем последнем проекте мое приложение не работает, если я даю ему относительный путь из командной строки. Но в режиме отладки в VS 2010 он переваривает относительные пути. Из командной строки требуется абсолютный путь к работа.
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);