2010-03-23 7 views
4

J'ai une application console .net appelée FooConsole. Lorsque je compile et déploie, je vois que le fichier App.config de mon projet est déployé à FooConsole.exe.config.Comment modifier le nom d'un fichier .config par défaut dans un projet .net

Comment puis-je déployer le fichier .config sur Foo.config au lieu de FooConsole.exe.config et de le lire comme fichier .config par défaut? MISE À JOUR: Je me rends compte que cela ressemble à une exigence arbitraire. Je voulais être capable d'écrire des scripts qui copieraient des fichiers .config personnalisés pour différents déploiements. Cependant, si mon nom de fichier .config doit dépendre du nom du fichier .exe, alors si quelqu'un (probablement) décide de changer le nom du fichier .exe, il va casser mes scripts. De vos réponses, il semble que ce soit un problème que je vais simplement devoir contourner.

Répondre

3

Bien que vous ne puissiez pas modifier le fichier de configuration par défaut, vous pouvez demander à ce fichier de configuration d'extraire son paramètre d'un autre fichier. par exemple.

<configuration> 
    <appSettings file="MyOther.config"></appSettings> 
</configuration> 

http://msdn.microsoft.com/en-us/library/ms228154.aspx

2

La meilleure question est: pourquoi voulez-vous? Quel est le problème avec le défaut qui vous dérange? Cela dit, vous pouvez charger par programme un fichier de configuration si vous le souhaitez, et vous pouvez le nommer comme vous voulez. This answer à une question similaire liens à tout ce que vous devez savoir.

2

Vous ne pouvez pas. Le système de configuration .NET essaiera toujours de trouver (exe nom de fichier) .config - pour votre foo.exe, .NET recherchera toujours foo.exe.config. Il n'y a pas de commutateur ou de réglage ou quelque chose pour changer cela.

Si vous voulez vraiment vraiment dévier de cette convention (vraiment?), Alors vous devrez utiliser la classe Configuration de l'espace de noms System.Configuration.

Si vous devez vraiment changer le nom de config (encore une fois: vraiment? Et pourquoi), utilisez ce code:

ExeConfigurationFileMap map = new ExeConfigurationFileMap(); 
map.ExeConfigFilename = "Custom.config"; // give it the name you want 

Configuration custom = 
    ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 

string value = custom.AppSettings.Settings["key"].Value; 

Vous devez ajouter « custom.config » à votre projet, et assurez-vous il est "copié dans le répertoire de sortie si plus récent".

Cela fonctionne - vous pouvez charger essentiellement un fichier que vous voulez - mais il est un peu une bidouille quand même ...

0

En fait, en supposant que vous wantt d'avoir une configuration centrale - la solution est simple: USEE LE DEFAUT NE FICHIER DE CONFIGURATION POUR CELA ... ... mais lancez votre propre mécanisme. Lire un fichier XML n'est pas si difficile.

+0

Cela ne semble pas juste! Pourquoi ne voudriez-vous pas utiliser une fonction intégrée à votre disposition et très facile à utiliser et pratique en même temps? – tzup

+2

parce que vous pouvez avoir 20 fichiers .exe tous dans le même dossier que tous vont aux mêmes paramètres. Les maintenir dans 20 fichiers de configuration différents n'est guère "très facile et pratique". le chargement d'un "fichier de configuration connu" est un doublage dans chaque application et peut être fortement typé. Pas chaque application est un petit site Web, tzup. Certains sont un peu ou beaucoup plus compliqués. – TomTom

+0

+1, ne mérite pas un downvote ... si c'est un fichier de configuration central alors oui, aller pour un "roll your own" est une solution possible –