Question

J'écris un fichier .dll C # .NET 2.0 qui est un plug-in pour une application plus grande . Le projet Visual Studio de mon module contient un fichier app.config qui est copié dans un fichier MyProj.dll.config à côté de MyProj.dll.

Nous prévoyons que MyProj.dll.config sera modifié après le déploiement du fichier .dll. J'essaie de lire mes paramètres à partir de ce fichier local modifié. J'ai essayé d'extraire LocalFilesSettingsObject et de changer son nom d'application en mon fichier .dll, comme ceci:

        Properties.Settings config = Properties.Settings.Default;
        SettingsContext context = config.Context;
        SettingsPropertyCollection properties = config.Properties;
        SettingsProviderCollection providers = config.Providers;
        SettingsProvider configFile = Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
        configFile.ApplicationName = Assembly.GetExecutingAssembly().GetName().Name;
        config.Initialize(context, properties, providers);
        config.Reload();

Cela ne fonctionne pas. Je ne parviens pas à comprendre tout le désordre des paramètres .NET. Je voudrais une recette pour terminer cette tâche. J'aimerais aussi un lien vers une explication claire (avec des exemples) de la manière dont les paramètres sont supposés fonctionner dans .NET 2.0

Était-ce utile?

La solution

Vous devrez charger vous-même le x.dll.config (avec l'API de configuration). Toute la gestion automatique des fichiers (y compris .Settings ) concerne uniquement machine.config / y.exe.config / user-settings.

Pour ouvrir un fichier de configuration nommé:

  • Assemblage System.Configuration.dll de référence.
  • Utilisation de System.Configuration
  • Créez un code tel que:

    Configuration GetDllConfiguration(Assembly targetAsm) {
      var configFile = targetAsm.Location + ".config";
      var map = new ExeConfigurationFileMap {
        ExeConfigFilename = configFile
      };
      return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
    }
    

Autres conseils

1- Ouvrir le fichier app.config dans Visual Studio

2- dans la "configuration" tag ajoutez vos configurations dans tag " appSettings " comme ci-dessous:

<configuration>
    <appSettings>
        <add key="UserName" value="aaa"/>
        <add key="Password" value="111"/>
    </appSettings>
</configuration>

3- dans votre code c #

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
string userName = appConfig.AppSettings.Settings["UserName"].Value;
string password = appConfig.AppSettings.Settings["Password"].Value;

et n’oubliez pas d’ajouter ces 2 utilisations de " ConfigurationManager " et pour "Assemblée"

  • using System.Configuration;
  • using System.Reflection;

Si la configuration System.Configuration ne s'affiche pas, vous devez ajouter la référence " System.Configuration " dans les références

4- vous pouvez mettre à jour les configurations de la dll comme suit:

  • ouvrez le fichier " MyProj.dll.config "
  • .
  • puis mettez à jour vos configurations
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top