2009-10-29 7 views
0

J'ai une solution .net ayant une hiérarchie de référence comme ceci MyWinApp-> ServerCore-> DataAccess où les deux derniers sont des bibliothèques de classes et myWinApp est une application Windows.Comment séparer le fichier de configuration?

Maintenant, chaque fois que je veux exécuter ce projet sur différents serveurs, j'ai besoin de reconstruire le projet car je n'arrivais pas à séparer le fichier de configuration (app.config) du projet DataAccess. Comment puis-je séparer les configurations de base de données du code d'application? J'ai essayé de créer des options d'action, mais cela ne fonctionne pas: S Quelle pourrait être la solution la plus réalisable?

Merci à l'avance

Répondre

2

La configuration devrait très probablement aller avec le projet MyWinApp. Le fichier de configuration va avec ce qui est en train d'être exécuté. Donc, si vous créez un programme d'installation pour votre application, il aura un fichier de configuration appelé MyWinApp.exe.config qui a été créé à partir de votre App.Config.

Fondamentalement, le app.config avec votre Datalayer.dll ne fait pas beaucoup. Ce que vous pouvez faire est de regarder comment fonctionne la propriété configSource pour les fichiers de configuration dans .net ici: http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource.aspx et voir si c'est ce que vous cherchez. Cela vous permet de définir une configSource pour vos chaînes de connexion que vous pouvez modifier par machine. Tout ce que je fais est de mettre en place un simple xcopy avant un déploiement et j'ai les paramètres de configuration corrects avant de déployer une application ASP.NET. Si vous devez empaqueter un programme d'installation, la copie des fichiers corrects avant de créer le programme d'installation devrait également faire l'affaire.

+1

Bien, je n'ai pas pensé à utiliser la source de configuration. C'est une bonne idée. –

+0

+1 yup, le "configSource = ......" peut être un véritable sauveur! –

+0

C'est génial! Merci beaucoup;) – Aleyna

1

Pour mes projets DAL j'ai généralement un fichier DataLayer.dll.config mais je fait ajouter les entrées de ConnectionString à mon dossier Program.exe.config. Je ne sais pas que tu as besoin de quelque chose de spécial pour ça. Peut-être simplement référencer une chaîne readonly statique ou quelque chose de DataLayer.dll dans Program.exe?

Ou, voulez-vous vraiment avoir des fichiers de configuration séparés? Si c'est le cas, vous pouvez utiliser la classe ConfigurationManager pour ouvrir un fichier de configuration lâche avec la méthode OpenMappedMachineConfiguration. Voir Réf MSDN ici: http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.openmappedmachineconfiguration.aspx

+0

Merci pour votre aide! Je combine votre suggestion avec celle de Min;) – Aleyna

0

Je pense que vous pouvez utiliser applicationSettings pour inclure la configuration pour des ensembles spécifiques référencées:

Par exemple:

<configuration> 
<applicationSettings> 
    <ProjectName.Properties.Settings> 
     <setting name="ConnectionString" serializeAs="String"> 
      <value>YourConnectionStringHere</value> 
     </setting> 
    </ProjectName.Properties.Settings> 
    </applicationSettings> 
</configuration> 

Où « ProjectName » est le nom de la référence que vous devez configurer. Chaque projet peut avoir son propre app.config avec l'entrée applicationSettings ci-dessus et une valeur spécifique au projet lui-même.

+1

Vous pouvez faire la même chose en ajoutant simplement la chaîne de connexion à la section de configuration ConnectionStrings avec le fichier exe du programme. Pas besoin d'utiliser un fichier de paramètres pour le faire. –

+0

Vous avez raison, c'est beaucoup mieux pour les chaînes de connexion, mais ne serait-il pas encore applicable aux autres configurations? – PabloC

+0

Merci Pablo, mais je pourrais faire valoir votre point de vue! – Aleyna

Questions connexes