2009-04-23 17 views
3

Je ne suis pas tout à fait sûr comment .NET et C# 3.5 gère les paramètres des applications couvrant plusieurs projets ainsi que des solutions multiples. Peut-être que quelqu'un peut m'aider à éclaircir les choses.Comment travailler avec des paramètres couvrant plusieurs solutions et projets dans VS 2008 et .NET

J'ai 2 solutions, toutes deux contenant plusieurs projets. Certains de ces projets contiennent un fichier Setttings.settings dans le dossier Propriétés, contenant les variables de configuration spécifiques requises par les fichiers source de ce projet.

Quelque chose comme

  1. JobManager Solution
    • Manager.Core (avec fichier de paramètres)
    • Manager.UserInterface (avec fichier de paramètres)
    • Manager.Extension
  2. Importateur Solution
    • Importateur (avec les paramètres fichier)
    • service (avec fichier de paramètres)

Comme on le voit, Manager.Core contient son propre fichier de configuration pour les informations de connexion de base de données de magasin et d'autres choses, alors que le Importer contient ses propres fichiers de configuration stockant les chemins d'accès aux répertoires d'importation pour savoir où obtenir les fichiers qu'il doit importer dans la base de données en utilisant Manager.Core à faire alors. (c'est ce que Manager.Core est là pour, il contient toutes les requêtes et insertions pour travailler avec le DB)

Service, d'autre part, est un service Windows qui utilise l'importateur et l'exécute toutes les heures , contenant ses propres paramètres de configuration pour les chemins d'enregistrement des erreurs.

Maintenant, quand je compilez le service, il y a le fichier de configuration est seulement 1 appelé Service.exe.config, contenant seulement les paramètres de configuration spécifiés dans le projet de service. Ma première approche consistait à dupliquer toutes les entrées de Manager.Core et Importer dans Service.exe.config. Mais les tests ont montré que, d'une manière ou d'une autre, les paramètres de l'importateur sont présents et utilisés.

Où sont les paramètres pour Manager.Core et Importer stockés lorsqu'ils ne sont pas présents dans Service.exe.config?

Les paramètres de Manager.Core sont-ils également présents, ce qui signifie qu'il n'est pas nécessaire de dupliquer les entrées de ces paramètres de configuration dans le fichier de paramètres du service?

Meilleures salutations, Michael

Répondre

1

paramètres par défaut sont normalement générés dans le code qui est ensuite compilé dans le dll

résultant Ils ont une définition d'une propriété de CustomTool « SettingsSingleFileGenerator »

Pour un fichier de paramètres, appelés Foo.settings contenant une valeur unique 'MyName' avec scope Application de type string avec la valeur "Shuggy" dans namespace Company.Properties (l'emplacement par défaut pour un projet appelé 'Company') si vous avez regardé la dll dans le réflecteur vous trouverez une classe dans l'espace de noms Company.Properties ressembler à ceci:

[GeneratedCode(
"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator" 
,"9.0.0.0")] 
[CompilerGenerated] 
internal sealed class Foo : ApplicationSettingsBase 
{ 
    private static Settings defaultInstance = 
     ((Settings) SettingsBase.Synchronized(new Settings())); 

    public static Settings Default 
    { 
     get { return defaultInstance; } 
    } 


    [ApplicationScopedSetting] 
    [DefaultSettingValue("Shuggy")] 
    [DebuggerNonUserCode] 
    public string MyName 
    { 
     get 
     { 
      return (string) this["MyName"]; 
     } 
    } 
} 

C'est ainsi que la structure des paramètres et les valeurs par défaut sont conservées dans les DLL auxquelles elles sont destinées. Les valeurs réelles sont lues à partir de différents fichiers de configuration en fonction de la portée (et peut-être les changements de programmation de l'application décide de faire)

Pour une vue plus haut niveau sur la façon dont ceux-ci sont destinés à être utilisés voir this article

+0

Cela signifie-t-il que, lorsque des DLL externes sont incluses dans une application, je ne peux pas modifier leurs paramètres d'application sans recompiler la DLL externe? –

+0

Les paramètres peuvent être modifiés via les fichiers de niveau utilisateur ou de niveau d'application standard, je ne crois pas que les paramètres utilisateur peuvent être modifiés à partir du fichier foo.exe.config mais les applications étendues peuvent être Voir http://msdn.microsoft. com/fr-fr/library/aa730869 (VS.80) .aspx pour la vue d'ensemble du fonctionnement de ces paramètres. – ShuggyCoUk

+0

Merci pour la réponse! –

0

Non utilisé ces mais pourriez-vous les remplacer par des liens vers un seul fichier dans les solutions?

+0

pourrait faire , bien que je préférerais utiliser ce qui est déjà là. Ce n'est pas comme si ça ne fonctionnait pas, je ne comprends tout simplement pas comment ça fonctionne exactement. ;) –