Доступ к файлу, который находится в другом проекте, но в том же решении - PullRequest
0 голосов
/ 05 января 2019

Я создаю xml-файл в проекте консольного приложения после и записываю в него данные из txt-файла, а также у меня есть основной проект mvc asp.net в том же решении. Я хочу читать xml-данные в asp. Чистый основной проект, но я не могу получить доступ к файлу, который находится в другом проекте, но в том же решении.

public IActionResult List()
    {
        List<Models.Word> wordList = new List<Models.Word>();
  string xmlPath=@"~\\YCMobyDickChallenge\\bin\\Debug\\netcoreapp2.1\\words.xml";
        //using (FileStream fs = new FileStream())
        using (XmlTextReader xmlReader = new XmlTextReader(xmlPath))
        {
            while (xmlReader.Read())
            {
                switch (xmlReader.NodeType)
                {
                    case XmlNodeType.Element:
                        if (xmlReader.Name != "words")
                        {
                            Models.Word word = new Models.Word();
                            word.text = xmlReader.GetAttribute("text");
                  word.count = Convert.ToInt32(xmlReader.GetAttribute("count"));
                            wordList.Add(word);
                        }
                        break;
                }
            }
        }
        wordList.Sort();
        return View(wordList);
    }

В этом решении, названном как YCMobyDickChallenge, у меня есть два проекта, таких как YCMobyDickChallenge и YCMobyDickWebApp, и я пытаюсь получить доступ к файлу words.xml, который находится в консольном приложении из веб-приложения. Когда я вызываю это действие, оно выдает ошибку вроде

.

"System.IO.DirectoryNotFoundException: 'Не удалось найти часть дорожка . 'C: \ Users \ cosku \ Source \ РЕПО \ YCMobyDickChallenge \ YCMobyDickWebApp \ ~ \ YCMobyDickChallenge \ YCMobyDickChallenge \ Bin \ Debug \ netcoreapp2.1 \ words.xml' ' "

1 Ответ

0 голосов
/ 05 января 2019

, так как вы уже нашли свой ответ, я дам вам несколько комментариев по поводу кода, который вы предоставляете.

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

public static constant string BatchOutputFolder = @"C:\BatchOutput\";

var xmlPath = Constants.BatchOutputFolder + "words.xml";
  1. когда вы используете знак '@' для объявления строки пути, вам не нужна двойная обратная косая черта '\'.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...