8
votes

.NET DLL Paramètres et configuration lorsqu'il y a une référence Web - ce qui se passe?

Ma compréhension est que .NET ne "que" ne "fasse" pas de fichiers de configuration des DLLS - seule l'application principale exécutable ou Web reçoit un fichier de configuration et toutes les DLL référencées par l'application exécutable / Web lisent de celle-ci.

Mais dans VS2008, si vous ajoutez une référence Web à un projet de bibliothèque de classe (DLL), il ajoute un fichier de paramètres.Settings et un fichier app.config au projet. Ils contiennent l'URL principale pour la référence Web.

Alors, quels sont ces fichiers? Il n'y a aucun moyen pour la DLL de les lire sans assistance, non?

Edit: Le contenu de l'app.config et des paramètres.Settings semble faire une différence cependant: changer (par exemple) l'URL de référence Web dans le fichier app.config du DLL du projet de DLL ne fait aucune différence, mais si vous Modifiez l'URL dans l'app.config, puis ouvrez le fichier Paramètres.Settings, les modifications que vous avez apportées dans App.Config puis être copiée dans Paramètres.Settings. Et puis, la DLL reprend la nouvelle valeur au moment de l'exécution. Comment ça fait ça?

Edit: Une partie de ma confusion ici est que je ne suis pas trop clair sur la différence entre les paramètres.Settings et app.config et comment ils se rapportent les uns aux autres, alors peut-être que les gens peuvent également aider avec ce problème aussi.


0 commentaires

3 Réponses :


6
votes

Il n'y a aucun moyen pour la DLL de les lire, mais ce sont des conseils forts à un consommateur de votre DLL de ce qu'ils voudront peut-être inclure dans le vrai paramètre / fichier de configuration

Modifier

En réponse au commentaire de OP - quel que soit le dernier édité dans les paramètres, est compilé dans le code comme défaut de prendre si aucun paramètre du nom correct n'est présent au moment de l'exécution. C'est pourquoi cela fonctionne.


2 commentaires

Les modifications apportées à l'app.config sont copiées sur le fichier Paramètres.Settings, puis semblent être ramassés au moment de l'exécution, donc ce n'est pas seulement pour le spectacle. Voir mon édition ci-dessus


Ah merci. Je n'étais pas trop clair sur la façon dont app.config concerne les paramètres.Settings afin que votre modification aide.



6
votes

Visual Studio doit ajouter ce truc quelque part et il ne sait pas quelle application vous souhaitez l'installer. Vous pouvez accéder à la configuration de la DLL en procédant comme suit:

var config = ConfigurationManager.OpenExeConfiguration("MyDll.dll.config");


5 commentaires

Donc, les dlls peuvent avoir des fichiers de paramètres.Settings et les lire au moment de l'exécution? Où se retrouvent le contenu de ces fichiers après une construction?


Non, la DLL avec un fichier de paramètres.Settings le lira à partir de l'app.config / web.config. Si cela ne peut pas être trouvé, il restera à ses valeurs par défaut.


Je pense que je vous confuse, avec mon utilisation du terme app.config. Je veux dire le fichier de configuration de l'application principale (myApp.exe.config ou web.config). Pour moi, la configuration de la dll est vraiment mydll.dll.config. Ht


J'ai également été confondu sur ce qui arrive à des valeurs dans les paramètres.Settings. Comme je le comprends maintenant, ils sont "cuits" dans l'assemblée comme défaut d'utilisation si aucune valeur ne provient de fichiers de configuration?


Oui, exactement ça. Regardez à l'intérieur du fichier Paramètres.Designer qui est généré. Vous verrez un attribut irréguliervalueattribute, comme celui-ci- [global :: system.configuration.defaultsetingvalueattribute ("test")]. Vous pouvez en savoir plus sur cet attribut ici- MSDN.microsoft.com / fr-nous / bibliothèque / ...



-2
votes

Il est possible de lire des fichiers de configuration dans la DLL. Ajoutez simplement un fichier app.config dans le projet DLL et assurez-vous de lire les paramètres de configuration de l'intérieur de la DLL. Lors du déploiement, votre fichier de configuration doit avoir le nom "mydll.dll.config" (supposer que votre DLL est nommée "mydll.dll") et être dans le même dossier que la DLL.

Le code suivant doit renvoyer mes connexions de ma DLL:

Renvoie ConfigurationManager.appsettings ["ConnectionsRing"];


2 commentaires

En outre, ce n'est pas ce que je demande. Je ne demande pas comment créer un fichier de configuration avec une DLL, je demande pourquoi Visual Studio prend la peine d'en ajouter un pour un projet DLL.


Testé dans .NET 4.6 et confirmé que cela ne fonctionne toujours pas.