C#: Transformace více konfigurací pro konzolovou nebo Windows aplikaci

Pro ty, kteří dělají WEB v ASP.Net, znají princip mít několik konfiguračních souborů:

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

Soubor Web.Config je pro váš vlastní vývoj, soubor Web.Debug.Config je pro TEST nebo DEV verzi (například na jiném serveru) a Release verze je pro PRODUCTION server.

Ale pro aplikaci Console nebo Winform tato možnost mít několik konfiguračních souborů neexistuje, alespoň ne na dosah ruky. Ukážu vám, jak tuto možnost přidat do aplikace Console nebo Winform nebo WPF.

Postupujte podle kroků přesně:

1. Vytvořte soubor App.Debug.Config nebo App.Release.Config například ve Visual Studiu pod vaším původním App.Config

2. Klikněte pravým tlačítkem myši na váš projekt a klikněte na "Unload Project" (v angličtině), neznám český překlad, ale mělo by to být něco jako "Odpojit projekt"

3. Poté na projektu klikněte pravým tlačítkem a zvolte "Edit" nebo "Upravit" .csproj nebo .vbproj

4. Zkopírujte tyto řádky pod poslední PropertyGroup:

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

5. Kde se nachází řádek <None Include="App.Config" /> (to hledáte), upravte a přidejte následující blok <None  Include="App.Debug.Config"> do sekce ItemGroup, samozřejmě pokud používáte pouze jeden další konfigurační soubor nebo více, je na vás, abyste přidali tyto nové bloky, které odpovídají vašim souborům a nezapomeňte změnit název:

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

6. Pod posledním tagem Import zkopírujte toto:

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

Pro Visual Studio 2017 je to verze v15.0, ale pokud používáte verzi Visual Studio 2019, nahradíte v15.0 za v16.0 (pro VS2015 = v14.0 a pro VS2013=v12.0)

Můžete si dokonce najít verzi svého Visual Studia na svém PC zde: 

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

7. Přidejte toto na konec svého souboru před tag </Project>

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

8. Uložte vše a znovu načtěte svůj projekt

9. Nezapomeňte jako v ASP.Net přidat značky xdt:Transform="SetAttributes" xdt:Locator="Match(name)" do vašeho nového konfiguračního souboru po každém prvku, který chcete transformovat, a tag <configuration> musí mít následující schéma xdt: xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"

Příklad:

 
<?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 🗙