Как разделить одно изолированное хранилище для двух приложений Windows Forms? - PullRequest
3 голосов
/ 29 мая 2011

У меня есть два приложения Windows Forms и библиотека в одном решении.

Класс библиотеки может создавать новые папки и файлы в IsolatedStorage и перечислять все файлы и папки в IsolatedStorage.

Первое приложение использует класс библиотеки для создания новых папок / файлов Я хочу, чтобы второй перечислял папки, созданные первым приложением. Как я могу заставить их использовать одно и то же изолированное хранилище?

1 Ответ

4 голосов
/ 29 мая 2011

Используйте IsolatedStorageFile.GetUserStoreForAssembly для создания изолированного хранилища из библиотеки.

Подробности здесь

Вы можете использовать приведенный ниже тип в своей библиотеке. И application1 и application2 могут записывать / читать в / из того же изолированного хранилища с помощью указанного ниже типа в вашей библиотеке.

ниже:

 public class UserSettingsManager
    {
        private IsolatedStorageFile isolatedStorage;
        private readonly String applicationDirectory;
        private readonly String settingsFilePath;

        public UserSettingsManager()
        {
            this.isolatedStorage = IsolatedStorageFile.GetMachineStoreForAssembly();
            this.applicationDirectory = "UserSettingsDirectory";
            this.settingsFilePath = String.Format("{0}\\settings.xml", this.applicationDirectory);
        }

        public Boolean WriteSettingsData(String content)
        {
            if (this.isolatedStorage == null)
            {
                return false;
            }

            if (! this.isolatedStorage.DirectoryExists(this.applicationDirectory))
            {
                this.isolatedStorage.CreateDirectory(this.applicationDirectory);
            }

            using (IsolatedStorageFileStream fileStream =
                this.isolatedStorage.OpenFile(this.settingsFilePath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
            using (StreamWriter streamWriter = new StreamWriter(fileStream))
            {

                streamWriter.Write(content);
            }

            return true;
        }

        public String GetSettingsData()
        {
            if (this.isolatedStorage == null)
            {
                return String.Empty;
            }

            using(IsolatedStorageFileStream fileStream =
                this.isolatedStorage.OpenFile(this.settingsFilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read))
            using(StreamReader streamReader = new StreamReader(fileStream))
            {
                return streamReader.ReadToEnd();
            }
        }
    }

EDIT:

DLL должна быть сборкой со строгим именем. На снимках ниже показано, как добавить строгое имя в сборку. Go to Project properties

In the Signing tab of the properties, Click on

...