baranq
baranq

Reputation: 293

How to share one IsolatedStorage for two Windows Forms Applications?

I have two Windows Forms applications and library in one solution.

Library class can create new folders and files in IsolatedStorage and list all files and folders in IsolatedStorage.

First application uses library class to create new folders/files I want the second one to list folders created by first app. How can i make them use the same isolated storage?

Upvotes: 3

Views: 2489

Answers (1)

Vijay Sirigiri
Vijay Sirigiri

Reputation: 4711

Use IsolatedStorageFile.GetUserStoreForAssembly to create isolated storage from the library.

Details here

You could use the below type in your library. And the application1 and application2 can write/read to/from the same isolated storage via the below type in your library.

Below:

 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:

The dll should be a strongly named assembly. Below snapshots show how to add a strong name to the assembly. Go to Project properties

In the Signing tab of the properties, Click on "New" drop down item and provide a snk name in the dialog

Upvotes: 5

Related Questions