Pour ceux qui font du WEB en ASP.Net, ils connaissent le principe d'avoir plusieurs fichiers de Config:

Web.Config
Web.Debug.Config
Web.Release.Config

Le fichier Web.Config est pour votre propre développement, le fichier Web.Debug.Config est pour la version TEST ou DEV (sur un autre serveur par exemple) et la version Release est pour le serveur de PRODUCTION.

Mais pour une application Console ou Winform, cette possibilité d'avoir plusieurs fichiers de Config n'existe pas, en tout cas pas à porter de main. Je vais vous montrer comment ajouter cette option dans une application Console ou Winform ou encore WPF.

Suivez les étapes de façon précise:

1. Créer un fichier App.Debug.Config ou encore un App.Release.Config par exemple dans Visual Studio en dessous de votre App.Config d'orgine

2. Cliquez avec le bouton droit de votre souris sur votre projet et cliquez sur "Unload Project" (en Anglais), je ne connais pas la traduction française mais ca doit être quelque chose comme "Décharger le Projet"

3. Ensuite sur le projet, clique bouton droit et faire "Edit" ou "Editer" .csproj ou .vbproj

4. Copier ces ligne en dessous du dernier PropertyGroup :

 
 
 
<PropertyGroup>
  <ProjectConfigFileName>App.config</ProjectConfigFileName>
</PropertyGroup>

 

5. La où se trouve la ligen <None Include="App.Config" /> (vous cherchez cela), modifier et ajouter le bloc suivant <None  Include="App.Debug.Config"> dans la section ItemGroup, bien sûr si vous n'utilisez qu'un seul fichier de Config supplémentaire ou plusieurs, à vous de mettre ces nouveaux blocs qui correspondent à vos fichiers et n'oublier pas de changer le nom:

 
 
 
 
 
 
 
 
 
<ItemGroup>
   <None Include="App.config" />
   <None Include="App.Debug.config">
     <DependentUpon>App.config</DependentUpon>
   </None>
   <None Include="App.Release.config">
     <DependentUpon>App.config</DependentUpon>
   </None>
 </ItemGroup>

 

6. En dessous du dernier tag Import copier ceci:

 
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.targets" />

 

Pour Visual Studio 2017, c'est la version v15.0, mais si vous utilisez la version Visual Studio 2019, vous remplacez v15.0 par v16.0 (pour VS2015 = v14.0 et pour VS2013=v12.0)

Vous pouvez vous même chercher la version de votre Visual Studio sur votre PC ici: 

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v[VOTRE VERSION VISUAL STUDIO]\Web\Microsoft.Web.Publishing.targets

7. Ajoutez ceci tout à la fin de votre fichier avant le tag </Project>

 
 
 
<Target Name="AfterBuild">
  <TransformXml Source="@(AppConfigWithTargetPath)" Transform="$(ProjectConfigTransformFileName)" Destination="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" />
</Target>

 

8. Sauvegardez le tout et recharger votre projet

9. N'oubliez pas comme en ASP.Net de mettre les balises xdt:Transform="SetAttributes" xdt:Locator="Match(name)" dans votre nouveau fichier de Config après chaque élément que vous voulez transformez et le tag <configuration> doit avoir le schema xdt suivant: xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"

Un exemple:

 
<?xml version="1.0"?>
 
  <appSettings>
    <add key="Mode" value="Debug" xdt:Transform="Insert"/>
    <add key="MyKey" value="123456" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
  </appSettings>
    <connectionStrings>
      <add name="MyDB"
        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
</configuration >