Comme vous l'avez déjà remarqué, il n'y a pas de défaut et facile à utiliser différents fichiers de configuration pour un type de Bibliothèque (.dll) du projet. La raison en est que le courant thining est: "Vous n'avez pas besoin"! Cadre développeurs pense que vous besoin de configuration, le fichier exécutable: une console, un bureau, web, application mobile ou quelque chose d'autre. Si vous commencer à fournir de configuration pour une dll, vous pouvez vous retrouver avec quelque chose que je peux appeler une config d'enfer. Vous pouvez ne comprends plus (facilement) pourquoi ce et que les variables ont de telles valeurs étranges venant apparemment de nulle part.
"Hold on", - vous pouvez dire, "mais j'en ai besoin pour mon intégration/tests unitaires, c'est une bibliothèque!". Et ce qui est vrai et ce est ce que vous pouvez faire (ne choisir qu'un seul, ne se mélangent pas):
1. SlowCheetah de transformations de fichier actuel
Vous pouvez installer SlowCheetah - Visual Studio plug-in qui fait tout le bas niveau XML piquer (ou de transformation) pour vous. La manière dont il fonctionne, brièvement:
- Installer SlowCheetah et redémarrez Visual Studio
- Définir vos configurations de solution (Debug et Release sont là par défaut), vous pouvez ajouter plus d' (clic droit sur la solution dans l'Explorateur de solutions > Gestionnaire de Configuration... > Configuration de la Solution Active > Nouveau...
- Ajouter un fichier de configuration si nécessaire
- Clic droit sur le fichier de config > Ajout de Transformer
- Cela permettra de créer des fichiers de Transformation - et-un pour votre configuration
- Transformer les fichiers de travail comme injecteurs/mutateurs, ils trouvent nécessaire de code XML dans le fichier de config d'origine et d'injecter de nouvelles lignes ou de muter nécessaire de valeur, tout ce que vous lui dites de faire
2. Tripoter .proj copie de fichier-renommer un tout nouveau fichier de configuration
À l'origine, à partir d' ici. Il est une coutume tâche MSBuild que vous pouvez intégrer dans Visual Studio .proj fichier. Copiez et collez le code suivant dans le fichier de projet
<Target Name="AfterBuild">
<Delete Files="$(TargetDir)$(TargetFileName).config" />
<Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config"
DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
Maintenant, créez un dossier dans le projet appelé Config
et ajouter de nouveaux fichiers: App.Debug.config, App.La libération.config et ainsi de suite. Maintenant, en fonction de votre configuration, Visual Studio va chercher le fichier de configuration à partir d'un Config
le dossier et copiez-le renommer dans le répertoire de sortie. Donc, si vous aviez PatternPA.Test.L'intégration du projet et un Débogage config sélectionné, dans le dossier de sortie après la construction, vous trouverez une PatternPA.Test.De l'intégration.dll.config fichier qui a été copié à partir d' Config\App.Debug.config
et renommé par la suite.
Ces quelques notes vous pouvez les laisser dans les fichiers de configuration
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- This file is copied and renamed by the 'AfterBuild' MSBuild task -->
<!-- Depending on the configuration the content of projectName.dll.config
is fully substituted by the correspondent to build configuration file
from the 'Config' directory. -->
</configuration>
Dans Visual Studio, vous pouvez avoir quelque chose comme ceci
3. Utiliser des scripts des fichiers en dehors de Visual Studio
Chaque outil de construction (comme le NAnt, MSBuild) permettent de transformer le fichier de configuration en fonction de la configuration. Ceci est utile si vous construisez votre solution sur une machine de compilation, où vous avez besoin d'avoir plus de contrôle sur ce que et comment vous préparer le produit pour la libération.
Par exemple, vous pouvez utiliser la publication web dll tâche de transformer n'importe quel fichier de config
<UsingTask AssemblyFile="..\tools\build\Microsoft.Web.Publishing.Tasks.dll"
TaskName="TransformXml"/>
<PropertyGroup>
<!-- Path to input config file -->
<TransformInputFile>path to app.config</TransformInputFile>
<!-- Path to the transformation file -->
<TransformFile>path to app.$(Configuration).config</TransformFile>
<!-- Path to outptu web config file -->
<TransformOutputFile>path to output project.dll.config</TransformOutputFile>
</PropertyGroup>
<Target Name="transform">
<TransformXml Source="$(TransformInputFile)"
Transform="$(TransformFile)"
Destination="$(TransformOutputFile)" />
</Target>