system.io.directorynotfound -> Но это работает в консоли! - PullRequest
1 голос
/ 06 августа 2009

На мои файлы ссылаются так (все относительно):

// 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.directory notfound, и «когда я дважды щелкаю по исполняемому файлу, эта проблема должна быть закрыта». Но запуск его из консоли работает как шарм. Что здесь не так?

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

отвечает ...

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

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

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

Ответы [ 3 ]

0 голосов
/ 06 августа 2009

Итак, когда вы запускаете его двойным щелчком по исполняемому файлу, есть ли файл с именем 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 голосов
/ 06 августа 2009

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

0 голосов
/ 06 августа 2009

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

Application.ExecutablePath() 

или

Application.StartUpPath()

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

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

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

...