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 >
 
Join the conversation

You need an account to comment on this article. Creating one is free and takes under a minute.

  • The XMLTV file, free to download every day
  • Comment on articles and reply to other readers
  • Get an e-mail when an article you follow is updated

Nessun commento per il momento.

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