Kontaktujte mě +420 773 272 767
mirek@miroslavholec.cz
Miroslav Holec

Miroslav Holec

Soukromé lokální konfigurace web.config

Miroslav Holec

Miroslav Holec

Publikován 16. června 2015 , aktualizace: 29. března 2016 | Devtips

Tento článek je starší 18 měsíců a je proto možné, že popisuje postupy nebo technologie, které v uplynulé době mohly doznat výraznějších změn. Názory a myšlenky v tomto článku již nemusí vyjadřovat současné stanovisko autora nebo autorů. Článek byl napsán 16. června 2015.

Pokud pracuje na vývoji projektu větší množství vývojářů, dříve nebo později dojde k situaci, kdy každý provádí změny v konfiguračních souborech (web.config, app.config). Konfigurace se obvykle automaticky merguje ale nezřídka se stává, že si vývojáři vzájemně commitují například connection string (což je nežádoucí).

Lokální connection strings

Nejtypičtější je konfigurace connection stringů. V konfigurační sekci souboru Web.config se odkážu na externí soubor pomocí atributu configSource.

Web.Config

<configuration>
    <connectionStrings configSource="ConnectionStrings.config"/> 
</configuration>

Tento XML soubor si v projektu vytvořím a nastavím jeho vlastnosti:

  • Build Action: Content
  • Copy To Output Directory: Copy Always

Nastavení vlastností XML souboru

Samotný soubor bude obsahovat jen konfigurační sekci connectionStrings.

ConnectionStrings.config

<connectionStrings>
   <add name="ConnectionString1" connectionString="xxx" providerName="System.Data.SqlClient" />
   <add name="ConnectionString2" connectionString="xxx" providerName="System.Data.SqlClient" />
</connectionStrings>

Transformace pro produkci

Transformaci connection stringů řeším úplným replacem celé sekce. Příkladem může být soubor Web.Production.config:

Web.Production.config

<connectionStrings xdt:Transform="Replace">
   <add name="ConnectionString1" connectionString="yyy" providerName="System.Data.SqlClient" />
   <add name="ConnectionString2" connectionString="yyy" providerName="System.Data.SqlClient" />
</connectionStrings>

Výhoda takového řešení je patrná. Jako vývojář mohu dle libosti commitovat do verzovacího systému soubor Web.config a Web.Production.config, aniž by záleželo na mé konfiguraci, kterou mám v souboru ConnectionStrings.config. Tento soubor mám jen lokálně a necommituji ho.

Toto nastavení se dá použít jak pro Web.config tak pro App.Config.

Náhled transformace ve VS

Pro náhled transformace lze ve Visual Studio (verze >= 2012) kliknout pravým myšítkem na specifický soubor a vybrat možnost Preview Transform.

Visual Studio Preview Transform

Práce v týmu

Při týmovém vývoji a práci se source controllem postupuji tak, že provedu první commit všech ConnectionStrings.config souborů, aby měl každý vývojář při checkoutu repozitáře kompletní projekt. Vývojář si následně jen nastaví exclude na ConnectionStrings.config souborech a může si s nimi dělat co chce.

AppSettings

Velmi podobným způsobem mohu nastavit i proměnné v sekci appSettings. Rozdíl je jen v tom, že místo atributu configSource se použije atribut file.

<configuration>
  <appSettings file="AppSettings.config" />
</configuration>

Podle toho můžu následně upravit i můj soukromý konfigurační soubor

AppSettings.config

<appSettings>
	<add key="someKey" value="personalValue" />
<appSettings>

Transformaci produkčního souboru řeším opět pomocí replace:

Web.Production.config

<appSettings xdt:Transform="Replace">
   <add key="someKey" value="productionValue" />
</connectionStrings>

Poznámky k řešení

Konfigurací existuje celá řada. Místo xdt:Transform="Replace" bych mohl pouze doplnit další konfigurační vlastnosti. K možnosti připojovat externí soubory bych mohl také přistoupit pouze jako k možnosti, jak zpřehlednit soubor Web.config a vyextrahovat z něj často měněné údaje. V takovém případě bych mohl nakonec transformace aplikovat i na samotném souboru ConnectionStrings.config nebo AppSettings.config.

Revize článku

  • 28 červenec 2015 - na základě komentáře přidána část Práce v týmu

Chcete ušetřit čas a mít přehled o nejdůležitějších novinkách týkajících se všeho kolem .NET Core? Vyzkoušejte zdarma Dotnet News, pečlivý výběr novinek, které pravidelně píšu a rozesílám vývojářům e-mailem.

Zeptejte se



HOLEC, Miroslav. Soukromé lokální konfigurace web.config. Azure & ASP.NET Core Blog [online]. Praha: Miroslav Holec, ©2010-2015. Poslední změna článku 29.3.2016 [vid. 2018-12-13]. Dostupné z: https://www.miroslavholec.cz/blog/soukrome-lokalni-konfigurace-web-config