Utilisez le plugin SlowCheetah . Pour plus d'options et de détails sur l'utilisation de SlowCheetah, continuez à lire.
Comme vous l'avez déjà remarqué, il n'existe aucun moyen simple et par défaut d'utiliser différents fichiers de configuration pour un projet de type Bibliothèque (.dll) . La raison en est que la pensée actuelle est: "Vous n'avez pas besoin de"! Les développeurs de framework estiment que vous avez besoin d'une configuration pour le fichier exécutable: qu'il s'agisse d'une console, d'un bureau, d'un site Web, d'une application mobile ou autre. Si vous commencez à fournir la configuration d'une dll , vous pouvez vous retrouver avec quelque chose que je peux appeler un enfer de configuration . Vous ne comprenez peut-être plus (facilement) pourquoi telle ou telle variable a des valeurs aussi étranges venant de nulle part.
"Attendez", - vous pouvez dire, "mais j'en ai besoin pour mon intégration / test unitaire, et c'est une bibliothèque!". Et c'est vrai et c'est ce que vous pouvez faire (n'en choisissez qu'un, ne mélangez pas):
1. SlowCheetah - transforme le fichier de configuration actuel
Vous pouvez installer SlowCheetah - un plug-in Visual Studio qui effectue tout le pokage (ou la transformation) XML de bas niveau pour vous. La façon dont cela fonctionne, brièvement:
- Installez SlowCheetah et redémarrez Visual Studio (Visual Studio> Outils> Extensions et mises à jour ...> En ligne> Galerie Visual Studio> recherchez «Slow Cheetah»)
- Définissez vos configurations de solution (le débogage et la version sont là par défaut), vous pouvez en ajouter plus (clic droit sur la solution dans Explorateur de solutions > Gestionnaire de configuration ... > Configuration de la solution active > Nouveau ...
- Ajoutez un fichier de configuration si nécessaire
- Faites un clic droit sur le fichier de configuration> Ajouter une transformation
- Cela créera des fichiers de transformation - un pour votre configuration
- Les fichiers de transformation fonctionnent comme des injecteurs / mutateurs, ils trouvent le code XML nécessaire dans le fichier de configuration d'origine et injectent de nouvelles lignes ou modifient la valeur nécessaire, quoi que vous lui disiez de faire
2. Fiddle with .proj file - copie-renomme un tout nouveau fichier de configuration
À l'origine pris d' ici . Il s'agit d'une tâche MSBuild personnalisée que vous pouvez incorporer dans le fichier .proj de Visual Studio . Copiez et collez le code suivant dans le fichier projet
<Target Name="AfterBuild">
<Delete Files="$(TargetDir)$(TargetFileName).config" />
<Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config"
DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
Créez maintenant un dossier dans le projet appelé Config
et ajoutez-y de nouveaux fichiers: App.Debug.config , App.Release.config et ainsi de suite. À présent, en fonction de votre configuration, Visual Studio choisit le fichier de configuration dans un Config
dossier et le renomme par copie dans le répertoire de sortie. Donc, si vous aviez sélectionné le projet PatternPA.Test.Integration et une configuration Debug , dans le dossier de sortie après la construction, vous trouverez un fichier PatternPA.Test.Integration.dll.config qui a été copié Config\App.Debug.config
et renommé par la suite.
Voici quelques notes que vous pouvez 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 ça
3. Utilisez des fichiers de script en dehors de Visual Studio
Chaque outil de construction (comme NAnt , MSBuild ) fournira des capacités pour transformer le fichier de configuration en fonction de la configuration. Cela est utile si vous créez votre solution sur une machine de génération, où vous devez avoir plus de contrôle sur quoi et comment vous préparez le produit pour la publication.
Par exemple, vous pouvez utiliser la tâche de la dll de publication Web pour transformer n'importe quel fichier de configuration
<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>
AfterBuild
cible. Lors de la compilation typique, laAfterBuild
cible est appelée par défaut. Il devrait y avoir une solution rapide pour le cas de publicationApp.<Target>.config
sur leApp.config
dans le répertoire du projet , pas le répertoire de sortie.Condition="Exists('$(ProjectDir)App.$(Configuration).config')"
.