Transformace konfiguračních souborů v .NET – Nástroje

V minulém příspěvku Transformace konfiguračních souborů v .NET jsem zlehka naznačil co to je XDT a jak se používá. Dneska bych se podíval na některé nástroje, které nám umožní XDT použít. Původně to byl jeden článek, ale vzhledem k rozsahu jsem ho raději rozdělil na dva. Z minula máme konfig i tranformaci, jak ale zařídit, aby se nám ta transformace provedla? By default jsme docela v pytli, protože pokud je mi známo, tak přímo ve visual studiu ani v .NET není žádný nástroj, kterým takovou transformaci provedete.

Web.config preview transform

Web.config preview transform

Web projekty

Výjimku tvoří web projekt, který hned po založení přidá k Web.config i dvě transformace Web.Debug.config a Web.Release.Config. Nad těmito soubory pak přes kontextové menu můžete vyvolat preview této transformace.

SlowCheatah

To je sice pěkné ale weby nejsou všechno. A tady přichází na scénu SlowChetah jako plug-in do Visual Studia. Ten vám zpřístupní ve visual studiu dvě akce, které vám umožní přidat transformaci a zobrazit její preview nad App.config souborem. Existuje i SlowCheatah NuGet balíček, který vám přidá build-in time podporu transformací. Podmínkou obou je, že každá transformace musí být vztažena k nějaké build configuration (release, debug atd.).  Toto může být dostačující pro některé projekty, ale jak už jsem psal v úvodu článku, někdy jsou těch prostředí stovky a pak je tato varianta obtížně použitelná. Ta věc s těmi build konfiguracemi se dá obejít tím, že si zmodifikujete csproj a přidáte si pod váš konfig tu transformaci ručně. Mě to ale ne vždy fungovalo, a navíc dělat to takhle pofiderně je nahouby. To se asi shodneme. SlowCheatah na GitHubu – https://github.com/Microsoft/slow-cheetah

CTT.EXE

Pokud chcete transformovat jakékoliv XML a nechcete k nim udržovat XY build konfigurací existuje ještě další varianta. Jmenuje je se CTT.EXE. Je to jednoduchá konzolová aplikačka, které dáte sežrat původní konfigurační soubor, transformaci a pak stačí říct kam se to má uložit a ono vám to tu transformaci provede. Funguje to velmi dobře jak v procesu nějakého aut. buildu /deploye tak v případě, že potřebujete ty konfigy z nějakého důvodu upravit ručně.

Následující příklad ukazuje, jak spustit transformaci z konzoly a právě PS scriptu. Nepovinnými atributy i a pw aplikaci říkáte, že má zachovat mezery a bílé znaky. Nefunguje to ale úplně na 100% proto. Mě například zachová formátování, ale více prázdných řádků to odstraní. No nic není dokonalé.

Nevýhoda spočívá v tom, že nemáte nástroj na preview ve studiu. Já osobně mám ctt.exe checknutý v TFS přímo u transformací a když si nejsem jistý a chci si zkontrolovat, jestli transformace funguje, tak to prostě spustím z příkazového řádku. Na porovnání původního a změněného konfigu pak používám TotalComander. Není to teda ideální varianta, ale dá se to používat. Možná, že když se mi bude chtít, tak nějaký preview plugin do studia napíšu. 🙂