C#: Trasformazione di più Config per un'applicazione Console o Windows

Per coloro che lavorano nel WEB in ASP.Net, conoscono il principio di avere più file di Config:

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

Il file Web.Config è per il proprio sviluppo, il file Web.Debug.Config è per la versione TEST o DEV (su un altro server ad esempio) e la versione Release è per il server di PRODUZIONE.

Ma per un'applicazione Console o Winform, questa possibilità di avere più file di Config non esiste, almeno non a portata di mano. Vi mostrerò come aggiungere questa opzione in un'applicazione Console o Winform o ancora WPF.

Seguite i passaggi in modo preciso:

1. Creare un file App.Debug.Config o anche un App.Release.Config ad esempio in Visual Studio sotto il vostro App.Config originale

2. Cliccate con il tasto destro del mouse sul vostro progetto e cliccate su "Unload Project" (in inglese), non conosco la traduzione italiana ma deve essere qualcosa come "Scarica il Progetto"

3. Poi sul progetto, cliccate con il tasto destro e fate "Edit" o "Modifica" .csproj o .vbproj

4. Copiate queste righe sotto l'ultimo PropertyGroup :

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

5. Dove si trova la riga <None Include="App.Config" /> (cercate questo), modificare e aggiungere il blocco seguente <None  Include="App.Debug.Config"> nella sezione ItemGroup, ovviamente se utilizzate solo un file di Config aggiuntivo o più, a voi di mettere questi nuovi blocchi che corrispondono ai vostri file e non dimenticate di cambiare il nome:

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

6. Sotto l'ultimo tag Import copiate questo:

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

Per Visual Studio 2017, è la versione v15.0, ma se utilizzi la versione Visual Studio 2019, sostituisci v15.0 con v16.0 (per VS2015 = v14.0 e per VS2013=v12.0)

Puoi anche cercare la versione del tuo Visual Studio sul tuo PC qui: 

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

7. Aggiungi questo alla fine del tuo file prima del tag </Project>

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

8. Salva tutto e ricarica il tuo progetto

9. Non dimenticare come in ASP.Net di mettere i tag xdt:Transform="SetAttributes" xdt:Locator="Match(name)" nel tuo nuovo file di Config dopo ogni elemento che vuoi trasformare e il tag <configuration> deve avere lo schema xdt seguente: xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"

Un esempio:

 
<?xmlversion="1.0"?>
 
  <appSettings>
    <addkey="Mode"value="Debug"xdt:Transform="Insert"/>
    <addkey="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 >
 

Aucun commentaire pour le moment.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙