2 votes

WebReference crée App.config même dans le projet d'assembly de bibliothèques

Pourquoi ajouter une référence web à un projet d'assemblage de bibliothèque crée-t-il un fichier app.config pour le projet? Il ne sera pas utilisé à l'exécution, n'est-ce pas ? - car il ne peut y avoir qu'un seul fichier de configuration racine par processus hôte (exécutable), - c'est pourquoi seuls les exécutables voient leurs app.configs renommés en "nomProjet.exe.config" et déployés dans le dossier de sortie pendant le processus de compilation.

De toute façon, la seule chose qui s'y trouve est une section applicationSettings avec un paramètre de configuration contenant l'URL du service web, qui sera généralement défini de manière dynamique par les opérations à l'aide d'un autre paramètre de configuration de toute façon...

Aussi, si un processus hôte a plusieurs assemblages de bibliothèque dépendants avec des références web, quel est l'intérêt? Lequel des nombreux paramètres (un par chaque assemblage de bibliothèque dépendant) serait utilisé?

Quoi qu'il en soit, je veux me débarrasser de ces app.configs, pour éviter l'exception lorsque le système de configuration ne parvient pas à trouver le paramètre à l'exécution, mais comme je ne suis pas clair sur la raison de sa présence en premier lieu... Est-ce que je manque quelque chose ?

4voto

Josh E Points 4449

Marquez la référence web comme statique (clic droit sur la référence -> propriétés -> Comportement de l'URL). Ensuite, l'URL sera stockée dans le fichier reference.cs au lieu du fichier .config.

Lorsqu'une assembly avec son propre app.config est chargée dans une application qui a un fichier .config séparé, je crois qu'elle fusionne les fichiers .config de la même manière que le machine.config est fusionné avec le web.config (je pourrais me tromper sur ce point cependant).

0voto

marc_s Points 321990

Vous avez déjà répondu à votre question - le app.config est ajouté car la référence Web a besoin de stocker l'URL du service quelque part. Il est préférable de le stocker dans un fichier de configuration plutôt que de le coder en dur dans votre fichier *.cs, n'est-ce pas?

Si vous avez des assemblies dépendantes utilisées par une application principale, seul le app.config de l'application principale (renomé en mainapp.exe.config) sera utilisé - les assemblies dépendantes utiliseront le fichier de configuration de l'application principale. Le app.config créé en ajoutant une référence web ne sert qu'à indiquer les réglages qui doivent être mis dans votre app.config principal.

Si vous avez un endroit séparé où vous configurez toutes vos URL de services web (par exemple une table de base de données ou autre), vous pouvez jeter les app.config générés - pas de problème à ce niveau là.

Marc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X