Question

J'ai un fichier exe avec un App.Config fichier.Maintenant, je veux créer un wrapper dll autour de l'exe afin de consommer certaines fonctionnalités.

La question est de savoir comment puis-je accéder à l'application.config de la propriété dans le fichier exe du wrapper dll?

Je devrais peut-être être un peu plus dans mes questions, j'ai l'application suivante.config contenu avec l'exe:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="myKey" value="myValue"/>
  </appSettings>
</configuration>

La question est de savoir comment comment faire pour obtenir "mavaleur" à partir du wrapper dll?


merci pour votre solution.

En fait, mon idée initiale était d'éviter de fichier XML méthode de lecture ou de LINQ ou quoi que ce soit.Mon préféré la solution a été d'utiliser la configuration du gestionnaire de bibliothèques et.

Je vais apprécier l'aide qui utilise les classes qui sont normalement associés à l'accès à l'app.propriétés de configuration.

Était-ce utile?

La solution 2

Après quelques tests, j'ai trouvé une façon de le faire.

  1. Ajouter l'Application.Fichier de configuration pour le projet de test.Utilisez la fonction "Ajouter un lien" option.
  2. Utilisation System.Configuration.ConfigurationManager.AppSettings["myKey"] pour accéder à la valeur.

Autres conseils

L' ConfigurationManager.OpenMappedExeConfiguration Méthode vous permettra de le faire.

De l'échantillon à partir de la page MSDN:

static void GetMappedExeConfigurationSections()
{
    // Get the machine.config file.
    ExeConfigurationFileMap fileMap =
        new ExeConfigurationFileMap();
    // You may want to map to your own exe.comfig file here.
    fileMap.ExeConfigFilename = 
        @"C:\test\ConfigurationManager.exe.config";
    System.Configuration.Configuration config =
        ConfigurationManager.OpenMappedExeConfiguration(fileMap, 
        ConfigurationUserLevel.None);

    // Loop to get the sections. Display basic information.
    Console.WriteLine("Name, Allow Definition");
    int i = 0;
    foreach (ConfigurationSection section in config.Sections)
    {
        Console.WriteLine(
            section.SectionInformation.Name + "\t" +
        section.SectionInformation.AllowExeDefinition);
        i += 1;

    }
    Console.WriteLine("[Total number of sections: {0}]", i);

    // Display machine.config path.
    Console.WriteLine("[File path: {0}]", config.FilePath);
}

EDIT:Cela devrait la sortie de la "maclé" valeur:

ExeConfigurationFileMap fileMap =
    new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = 
    @"C:\test\ConfigurationManager.exe.config";
System.Configuration.Configuration config =
    ConfigurationManager.OpenMappedExeConfiguration(fileMap, 
    ConfigurationUserLevel.None);
Console.WriteLine(config.AppSettings.Settings["MyKey"].Value);

Je pense que ce que vous cherchez est:

System.Configuration.ConfigurationManager.OpenExeConfiguration(string path)

J'avais deuxième uasin gishu point qu'il y a une autre manière.Ne serait-il pas mieux abstraite de la commune/partie publique de l'EXE dans DLL créer un wrapper EXE pour le faire fonctionner?C'est certainement la plus habituelle de modèle de développement.Seulement les choses que vous souhaitez consommer irait dans le DLL et le fichier EXE serait de faire tous les trucs qu'actuellement, moins ce qui s'en est allé dans la DLL.

C'est un fichier xml, vous pouvez utiliser Linq-XML et DOM en fonction des approches pour analyser les informations pertinentes.
(qui a dit que j'avais une question si il n'y a pas une meilleure conception pour ce qu'il est..vous tentez d'atteindre.)

Ajout d'un lien dans l'IDE ne pouvait qu'aider au cours du développement.Je pense que lomaxx a la bonne idée: System.Configuration.ConfigurationManager.OpenExeConfiguration.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top