2009-10-12 13 views
2

En ce moment, quand je libère une nouvelle version de mon application .NET, les points de chemin de UserAppDataPath à un nouveau dossier qui comprend le numéro de build.Comment puis-je partager les paramètres utilisateur ou les fichiers à l'aide du UserAppDataPath entre les versions?

Documents et Settings \ UserName \ Application Data \ Société \ AssemblyName \ 1.0.0.0

J'utilise ce chemin comme un lieu de rangement pratique pour les fichiers de configuration de l'interface utilisateur de l'utilisateur étendu. Chaque fois que je libère l'utilisateur perd ses paramètres d'interface utilisateur précédents.

Est-il sûr de de couper le numéro de version \ 1.0.0.0 et d'utiliser son chemin racine? ou existe-t-il un meilleur moyen de stocker les paramètres dans un endroit qui a toujours des privilèges d'écriture?

+0

Comment êtes-vous déployez l'application? Cela fait un moment que je l'ai utilisé, mais je crois que ClickOnce permet de migrer les paramètres précédents. –

+0

Je sais que ce n'est pas la meilleure façon de libérer, mais mon entreprise met juste les fichiers binaires de libération dans un dossier partagé et un script de connexion met à jour l'installation de tout le monde. –

+0

Je ne suis pas autorisé à utiliser ClickOnce à ce stade –

Répondre

2

AppSettings faire des mises à niveau de soutien. Jetez un oeil here. Espérons que cela vous fait dans la bonne direction ...

+0

Est-ce que le travail pour les fichiers autres que le app.config? J'ai stocké d'autres fichiers avec le app.config? –

+0

Dépend de ce que vous entendez par "autres" fichiers, et comment ils sont mis en œuvre. S'agit-il de paramètres personnalisés ou de l'utilisation des classes de support des paramètres intégrés de .NET? Cela devrait fonctionner pour les paramètres qui implémentent l'interface 'IApplicationSettingsProvider'. –

0

J'utilise le code suivant lors de la récupération des données personnalisées stockées dans des dossiers potentiellement anciens des versions antérieures de l'Assemblée:

string suffix = "/MyUserSettings.dat"; 
    string folder = Application.UserAppDataPath; 
    string filename = folder + suffix; 

    if (!File.Exists(filename)) 
    { 
     // Check whether an older folder from a previous version with appropriate user data exists 
     DirectoryInfo[] directories = new DirectoryInfo(folder).Parent.GetDirectories("*", SearchOption.TopDirectoryOnly); 
     for (int i = 0; i < directories.Length; i++) 
     { 
      if (File.Exists(directories[i].FullName + suffix)) 
      { 
       filename = directories[i].FullName + suffix; 
      } 
     } 
    } 

    if (File.Exists(filename)) 
    { 
     // load user settings from file 
    } 
    else 
    { 
     // use default settings 
    }