Кто-нибудь использует .NET System.IO.IsolatedStorage? - PullRequest
10 голосов
/ 19 августа 2011

Я читал о пространстве имен System.IO.IsolatedStorage в .NET и обнаружил, что могу использовать его для хранения файла в месте, уникальном для моей сборки или исполняемого файла. Например, следующий код:

using System.IO.IsolatedStorage;

public class Program
{
     static void Main(string[] args)
     {
           IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForAssembly();
           store.CreateFile("myUserFile.txt");
     }
 }

Создает файл "myUserFile.txt" в следующем месте:

C: \ Users \ Ник \ AppData \ Local \ IsolatedStorage \ bhxcjtkp.bpv \ wbjkcolm.3br \ StrongName.m2s0saaun2onmow3pd5pkml30lf2dobr \ AssemFiles

И использование IsolatedStorageFile.GetMachineStoreForAssembly() создает похожую структуру каталогов в C: \ ProgramData \ IsolatedStorage.

Я вижу преимущество, которое позволяет этому API создавать для вас место хранения (не нужно самостоятельно придумывать путь к файлу). Но я был удивлен, увидев, что в IsolatedStorage не было других файлов, хранящихся в других сторонних приложениях (по крайней мере, на моем компьютере).

Вместо этого я обнаружил довольно много программ, хранящих файлы конфигурации, и такие просто в C: \ Users \ Nick \ AppData \ Local. Кто-нибудь знает причину, почему поставщики программного обеспечения могут уклоняться от использования IsolatedStorage? Или они используют другой API, который хранит файлы в AppData?

Ответы [ 2 ]

7 голосов
/ 19 августа 2011

Одна из причин, которую мы нашли (трудный путь), заключается в том, что алгоритм, используемый приложениями для определения пути для использования в изолированном хранилище, зависит от версии приложения.Установка новой версии приложения приводит к невозможности доступа к ранее сохраненным данным.Я уверен, что есть варианты, чтобы этот сценарий работал, но мы не смогли их найти и просто перешли на постоянный путь хранения.

3 голосов
/ 19 августа 2011

Изолированное хранилище идеально подходит для пользовательских и пользовательских настроек, а также для подобных данных.Под «такими данными» я подразумеваю данные, которые не являются критически важными для приложения (по причинам, которые вы видели), но которые выгодно держать в стороне от глаз пользователей.так что ожидайте, что так будет всегда, и вы не будете разочарованы.

...