Mise à jour
Cette réponse est quelque peu dépassée. Je vais la laisser pour l'histoire et les personnes qui préfèrent ne pas utiliser de modules complémentaires pour une raison quelconque. Veuillez vous référer à Réponse de Scott à moins que vous ne sachiez ce que vous faites.
J'ai essayé plusieurs solutions, et voici la plus simple que j'ai trouvée.
Dan a souligné dans les commentaires que le billet original appartient à Oleg Sych - Merci, Oleg !
Voici les instructions :
1. Ajoutez au projet un fichier XML pour chaque configuration.
En général, vous aurez Debug
et Release
donc nommez vos fichiers App.Debug.config
et App.Release.config
. Dans mon projet, j'ai créé une configuration pour chaque type d'environnement, vous pouvez donc l'expérimenter.
2. Déchargez le projet et ouvrez le fichier .csproj pour le modifier.
Visual Studio vous permet de modifier .csproj directement dans l'éditeur - vous devez juste décharger le projet avant. Ensuite, cliquez avec le bouton droit de la souris sur le projet et sélectionnez Modifier le fichier <Nom du projet>.csproj .
3. Lier les fichiers App.*.config à l'App.config principal
Trouvez la section du fichier du projet qui contient tous les App.config
et App.*.config
références. Vous remarquerez que leurs actions de construction sont réglées sur None
:
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
Tout d'abord, définissez une action de construction pour chacun d'entre eux pour Content
.
Ensuite, faites en sorte que tous les Configuration spécifique fichiers personne à charge sur le principal App.config
afin que Visual Studio les regroupe comme il le fait pour les fichiers de conception et de codebehind.
Remplacez le XML ci-dessus par celui ci-dessous :
<Content Include="App.config" />
<Content Include="App.Debug.config" >
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="App.Release.config" >
<DependentUpon>App.config</DependentUpon>
</Content>
4. Activer la magie des transformations
En fin de dossier après
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
et avant la finale
</Project>
insérer le XML suivant :
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')">
<!-- Generate transformed app config in the intermediate directory -->
<TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
<!-- Force build process to use the transformed configuration file from now on. -->
<ItemGroup>
<AppConfigWithTargetPath Remove="app.config" />
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
<TargetPath>$(TargetFileName).config</TargetPath>
</AppConfigWithTargetPath>
</ItemGroup>
</Target>
Maintenant vous pouvez recharger le projet, le construire et en profiter. App.config
transformations !
0 votes
Je suis tombé sur l'article suivant qui semble un peu plus simple mais je ne l'ai pas essayé moi-même. fknut.blogspot.com/2009/11/ Il y a également une demande de fonctionnalité sur MS Connect qui pourrait valoir la peine d'être votée pour qu'elle soit incluse dans le prochain SP ou la prochaine version. connect.microsoft.com/VisualStudio/feedback/details/564414