Я использовал ApplicationDeployment.CurrentDeployment.DataDirectory
для хранения контента, загружаемого клиентом во время выполнения, который, как ожидается, будет присутствовать при каждом запуске приложения, однако теперь я обнаружил, что это изменение кажется случайным, если приложение обновлено.
Каков наилучший надежный метод хранения пользовательских данных для приложения при развертывании с однократным нажатием?
В настоящее время я использую следующий метод
private const string LocalPath = "data";
public string GetStoragePath() {
string dir;
if (ApplicationDeployment.IsNetworkDeployed) {
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
dir = Path.Combine(ad.DataDirectory, LocalPath);
} else {
dir = LocalPath;
}
return CreateDirectory(dir);
}
Я изначально следовал статье Доступ к локальным и удаленным данным в приложениях ClickOnce под заголовком ClickOnce Data Directory
, в котором говорится, что это рекомендуемый путь.
ПРИМЕЧАНИЕ: CreateDirectory(string)
просто создает каталог, если он еще не существует.
Я нашел основную причину моей проблемы: я создаю много файлов и индексный файл, этот индексный файл содержит абсолютные пути, один раз перемещает содержимое (или копии) при обновлении, поэтому абсолютные пути нет дольше. Я буду исследовать изолированное хранилище, так как Damokles предлагает проверить, имеет ли это одно и то же влияние на развертывание с щелчком мыши.