У меня есть приложение WPF, которое сохраняет свои данные в файлы XML в каталоге относительно кода , который называется «Данные».
Я получаю относительный путь к каталогу данных с помощью следующих методов:
protected string ApplicationPath
{
get { return System.IO.Path.GetDirectoryName(System.Reflection.Assembly
.GetExecutingAssembly().CodeBase); }
}
protected string ApplicationDataPath
{
get { return ApplicationPath + @"..\..\..\Data\"; }
}
public string FullXmlDataStorePathAndFileName
{
get
{
return ApplicationDataPath + GetItemTypeIdCode() + ".xml";
}
}
Это работает для тестирования, поскольку Debug или Relates .exe вернутся обратно в проект и получат доступ к данным.
Проблема №1 в том, что он не работает при сохранении XML-файла, я получаю сообщение об ошибке " URI форматы недействительны ", похоже, он не может справиться с "... ... \ "часть пути при сохранении:
xmlDoc.Save(FullXmlDataStorePathAndFileName);
Проблема №2 заключается в том, что когда я хочу развернуть свое приложение (например, сделать его доступным для загрузки, чтобы кто-то разархивировал и дважды щелкнул по файлу .exe), тогда файлы .xml должны находиться в одном каталоге как .exe или один ниже в каталоге Data, чтобы каждый экземпляр приложения мог читать и записывать в свои собственные XML-файлы.
Какое для этого лучшее решение? Требования:
XML-файлы должны быть локально в рамках проекта и прозрачными при разработке и тестировании, например, отредактируйте XML-файлы в Visual Studio и выберите «Копировать в выходной каталог» «Копировать, если новее», , поэтому при разработке базовые данные всегда обновляются при нажатии F5
прямой путь, например, архивирование каталога «Release» и все файлы (.exe и исходные файлы XML) находятся там, а пути в .exe указывают на файлы XML при запуске
Кто-нибудь разработал хорошее решение для размещения локального источника данных XML в относительном каталоге, подобном этому?