J'ai essayé plusieurs solutions et voici la plus simple que j'ai trouvée personnellement.
Dan a souligné dans les commentaires que le message d'origine appartient à Oleg Sych - merci, Oleg!
Voici les instructions:
1. Ajoutez un fichier XML pour chaque configuration au projet.
En général , vous aurez Debug
et Release
configurations nom pour vos fichiers App.Debug.config
et App.Release.config
. Dans mon projet, j'ai créé une configuration pour chaque type d'environnement, donc vous voudrez peut-être l'expérimenter.
2. Déchargez le projet et ouvrez le fichier .csproj pour le modifier
Visual Studio vous permet de modifier des fichiers .csproj directement dans l'éditeur - il vous suffit de décharger le projet en premier. Cliquez ensuite dessus avec le bouton droit de la souris et sélectionnez Modifier <ProjectName> .csproj .
3. Liez les fichiers App. *. Config au fichier principal App.config
Recherchez la section du fichier de projet qui contient tout App.config
et les App.*.config
références. Vous remarquerez que leurs actions de génération sont définies sur None
:
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
Tout d'abord, définissez l'action de construction pour chacun d'eux Content
.
Ensuite, rendez tous les fichiers spécifiques à la configuration dépendants du principal App.config
afin que Visual Studio les regroupe comme il le fait pour les fichiers de concepteur et de code.
Remplacez 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. Activez la magie des transformations (uniquement nécessaire pour les versions de Visual Studio antérieures à VS2017 )
En fin de dossier après
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
et avant la finale
</Project>
insérez le XML suivant:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="CoreCompile" 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>
Vous pouvez maintenant recharger le projet, le construire et profiter des App.config
transformations!
FYI
Assurez-vous que vos App.*.config
fichiers ont la bonne configuration comme celle-ci:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--magic transformations here-->
</configuration>