Развертывание Windows IoT UWP удаляет мое приложение?

#uwp #windows-10-iot-core

#uwp #windows-10-iot-core

Вопрос:

У меня есть приложение UWP, которое я развертываю в Windows 10 IoT, работающее на Raspberry Pi. Раньше это работало нормально, но в последние несколько дней (возможно, после обновления чего-либо) последующие развертывания удалят все файлы в папке LocalState. На самом деле, все файлы, похоже, очищены.

Я проверил настройки проекта (хотя там ничего не изменилось, но все в порядке) и проверил следующее:

  • Флажок «Удалить, а затем переустановить мой пакет» снят.
  • Установлен флажок «Сохранять все файлы на устройстве, даже те, которые больше не являются частью вашего макета».

Эти файлы записываются самим приложением, поэтому при первом развертывании там ничего нет. Но между развертываниями я хочу, чтобы они сохранялись (содержат данные стиля конфигурации). Под «развертыванием» я подразумеваю просто нажатие клавиши F5 в Visual Studio и развертывание на удаленном компьютере (Pi).

Возможно, это что-то глупое, но я не могу понять, почему оно ведет себя так, как оно ведет.

Ответ №1:

Это очень хороший улов.

Хотя основная причина мне пока неясна, я обнаружил, что,

  1. Если у вас есть файл vs.appxrecipe, существующий в «Пути к папке макета» перед отладкой, данные вашей локальной папки приложения будут сохранены.
  2. В противном случае данные вашей локальной папки приложения будут удалены.

Итак, обходной путь на данный момент — вручную создать копию vs.appxrecipe и всегда копировать ее в путь к папке макета перед отладкой.

Я попытался сделать это в командной строке события сборки, либо перед сборкой, либо после сборки,

 xcopy /Y "$AppxrecipeFolderPathvs.appxrecipe" "$LocalApplicationFolder"
  

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

Комментарии:

1. Спасибо, попробую это обходное решение. Вы на стороне MSFT?

2. Хорошо 🙂 Избавляет меня от необходимости где-то регистрировать ошибку (если вы этого не хотите).

3. Странно, я попробовал команду сборки, но она не работает, говоря, что не может найти файл. Я проверил, у меня есть только файл vs.appxrecipe в папках сборки x86 и x64 моего проекта. ARM (который развертывается на Pi) не содержит того же файла.

4. Также странно: когда это происходит, и я вручную воссоздаю файл, я могу выполнить 1 развертывание без удаления файла. Однако при следующем развертывании оно снова будет удалено.

5. @Jasper, да, файл может быть удален во время какого-либо развертывания. Я обнаружил, что если у вас есть файл на месте до отладки, данные папки вашего приложения будут сохранены.