У меня есть приложение WPF (установлено на компьютерах с Windows 10), которое использует файлы XML для различных элементов данных.
После создания и установки приложения приложение и XML-файлы развертываются в разных папках следующим образом:
XML файлы
[AppData \ Local \ Apps ...] \ vita..tion_4af4e5dd3b243aa8_0001.0000_fa5707b5107abce1
EXE
[AppData \ Local \ Apps ...] \ vita..tion_4af4e5dd3b243aa8_0001.0000_f75ca9501de16621
Это мешает мне получить доступ к моим файлам, используя что-то вроде этого:
Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\XML\\GeneralInfo.xml";
Спасибо!
Использование мастера публикации (или публикации сейчас) для публикации приложения.
Файлы XML помечены как Действие сборки: «Контент» и Копировать в выходной каталог: «Копировать всегда» в свойствах.
@appayipyip - Только что обновил вопрос; Благодарю.
Я считаю, что это нормальное поведениене результат какого-то странного артефакта испорченной публикации¹.
Попробуйте получить доступ к своим файлам, используя это:
var deployment = ApplicationDeployment.CurrentDeployment;
var pathToXml = Path.Combine(deployment.DataDirectory, "MyFile.xml");
Вам нужно будет добавить ссылку на System.Deployment
в свое приложение.
Надеюсь, это поможет :)
-
¹ Из ответа Честера Хонга на вопрос это:
Each ClickOnce application is installed in per-user, per-application cache folder. You can find the folder like:
C:\Users\username\AppData\Local\Apps\2.0
You can go to Publish tab and click Application Files button. The files whose Publish Status are Data File will be installed into data folder, which you can specify by
CurrentDeployment.DataDirectory
property.
(Несколько частей опущены, скорректированы и выделены мной)
Вы используете мастер публикации для создания приложения ClickOnce? Как вы развертываете свои XML-файлы?