Невозможно загрузить документ во время выполнения из Project \ Data Folder в C # - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь загрузить документ XML, который находится в Project \ Data, как показано ниже:

            XmlDocument memoryDoc = new XmlDocument();
            memoryDoc.Load(@"Data/Memories.xml");
            XmlNode xmlNode_Memories = memoryDoc.SelectSingleNode("Memories");
            XmlElement xmlElement_Memory = memoryDoc.CreateElement("Memory");
            xmlElement_Memory.SetAttributeNode("Title", "");
            xmlElement_Memory.SetAttribute("Title", "hijdnjh9d2qhei");
            xmlNode_Memories.AppendChild(xmlElement_Memory);
            memoryDoc.Save(@"Data/Memories.xml");

, но программа пытается загрузить его из Project \ bin \ Debug \ Data, который нене существует, и он плачет.Как мне заставить его загружаться из Project \ Data без необходимости включать полный путь, даже если только для целей тестирования?

Также это может вызвать проблемы при упаковке моей программы в установщик и, следовательно, потребовать от меняскопировать файл в другое место перед загрузкой?

1 Ответ

0 голосов
/ 08 ноября 2011

Это происходит потому, что ваш exe-файл запускается из каталога Project \ bin \ debug (вот куда выводятся ваши сборки, когда вы нажимаете F5 / Run / Debug в Visual Studio, если вы делаете отладочную сборку.

Если вы хотите избежать жестко заданного пути, вы можете использовать событие посткомпоновки, чтобы скопировать файл в каталог Project \ bin \ debug \ data.

Щелкните правой кнопкой мыши проект в обозревателе решений и выберитевыберите свойства. Перейдите на вкладку «События сборки». Это похоже на написание командного файла, вы можете скопировать этот файл оттуда (нажмите «изменить», а затем нажмите кнопку «Макросы» - есть переменные расширения, предоставляющие пути).

Команда будет выглядеть примерно так (из памяти, поэтому может быть немного не так):

copy $(ProjectDir)\Data\Memories.xml $(TargetDir)\data\.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...