@RobinDotNet Хороший вопрос
ользую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)
просто создает каталог, если он еще не существует.
Я нашел основную причину моей проблемы в том, что я создаю много файлов и индексный файл, этот индексный файл содержит абсолютные пути, щелчок один раз перемещает содержимое (или копии) при обновлении, поэтому абсолютные пути больше не существуют. Я буду исследовать изолированное хранилище, поскольку Дамокл предлагает выяснить, имеет ли это тот же побочный эффект при развертывании одним щелчком.