2009-08-05 3 views
1

Мои файлы упоминаются как так (это все относительно):system.io.directorynotfound -> Но он работает в консоли!

// WHERE YOU KEEP THE PAGE TITLE XML 
    public static string  myPageTitleXML = "xml/pagetitles.xml"; 

и

using (StreamReader r = new StreamReader(myPageTitleXML)) 
    { //etc.. . .etc....etc.. 
    } 

я получаю system.io.directorynotfound, и «эта проблема должна быть закрыта», когда я дважды щелкните исполняемый файл. Но запуск его с консоли работает как шарм. Что здесь не так?

Я играл с попыткой установить Environment.CurrentDirectory, но не смог заставить ничего работать. Зачем мне это делать? Это побеждает цель относительного пути нет?

отвечающий ...

"приложение" не существует в текущем контексте, я буду стараться, что уже говорили люди, это не windows.form

тестирование

Path.GetDirectoryName (Reflection. Assembly.GetExecutingAssembly(). GetName(). CodeBase), myPageTitleXML); дает ошибки URI форматы не поддерживаются, как и Path.GetFullPath(). Результаты Server.MapPath в ошибках, а это в настоящее время отсутствует

ответ

0

Ну предполагая этот каталог находится где-то в каталоге, в котором выполняется код, это звучит, как вы можете использовать ..

Application.ExecutablePath() 

или

Application.StartUpPath() 

.., чтобы получить представление о том, что ваше приложение видит, когда он идет в поисках каталога «XML» с файлом «pagetitles.xml» в нем.

Если каталог, возвращенный одним из этих методов, не указывает, где вы его думали, вам нужно будет переместить местоположение вашего приложения или местоположение этой папки, чтобы оно находилось в том же каталоге, что и приложение ,

Надеюсь, это поможет вам на правильном пути.

0

Итак, когда вы запускаете его из двойного щелчка по исполняемому файлу, есть ли файл с именем pagetitles.xml в папке с именем xml, где xml - это папка в том же месте, что и исполняемый файл?

Конечно, можно использовать относительные пути, подобные этому, но я бы не рекомендовал его. Вместо этого, возможно, используйте что-то вроде:

string fileToOpen = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), myPageTitleXML); 
using (StreamReader r = new StreamReader(fileToOpen)) 
{ 
    //etc.. . .etc....etc.. 
} 
0

Это код ASP.NET? Если это так, вам, вероятно, нужно будет сделать MapPath («xml/pagetitles.xml»)

 Смежные вопросы

  • Нет связанных вопросов^_^