2009-01-15 9 views
2

J'ai un addin .NET personnalisé pour une application et j'essaye de créer des configSections pour le fichier de configuration de l'addin. Le problème est que je ne suis pas capable de lire cette section Si charger la configuration en utilisant OpenMapperExeConfiguration/OpenExeConfiguration.Est-il possible de définir <configSections> dans la configuration de l'application d'une DLL dépendante?

Voici mon fichier de configuration (MyTest.dll.config)

<configuration> 
    <configSections> 
    <section name="test" type="MyTest, Test.ConfigRead"/> 
    </configSections> 
    <test> 
      ..Stuff here 
     </test> 
    <appSettings> 
     <add key="uri" value="www.cnn.com"/> 
    </appSettings> 
</configuration> 

Voici mon exemple de code pour accéder au configSection test

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 
fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + "config";  
Configuration applicationConfig = ConfigurationManager.OpenMappedExeConfiguration(fileMap,ConfigurationUserLevel.None); 
//Using OpenExeConfiguration doesnt help either. 
//Configuration applicationConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); 
//Accessing test section 
applicationConfig.GetSection("test"); 

//Accessing AppSettings works fine. 
AppSettingsSection appSettings = (AppSettingsSection)applicationConfig.GetSection("appSettings"); 
appSettings.Settings["uri"].Value; 

Comme le montre la valeur AppSettings peut être lu très bien. Est-il possible d'avoir configSections dans une autre configuration autre que le fichier de configuration de l'application principale?

Répondre

0

Les paramètres de configuration s'appliquent à l'application (app.config situé dans la racine de l'application pour .EXE, racine Web pour les applications Web) et machine (machine.config située dans [Racine système] \ Microsoft.NET \ Framework [version CLR] \ CONFIG) niveau.

Le seul autre fichier de configuration utilisé est le fichier de configuration de politique qui est utilisé pour créer des politiques de versionnement d'ensemble et est lié à l'assembly en utilisant l'outil AL. C'est évidemment ce que vous ne voulez pas faire. Essayez de fusionner les sections de configuration de l'add-in dans la section config de l'application en cours pour créer un fichier de configuration au niveau de l'application ou placez-les dans le fichier machine.config.

0

Vous manquez un '.' délimiteur?

fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + "config"; 

ajouter le '':

fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config"; 
Questions connexes