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 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é.
1 2 3 4 5 6 | #cmd ctt.exe i pw s:"myconfig.config" t:"transform.config" d:"myconfig.config" #PowerShell $ctt = "c:\ctt.exe" & $ctt i pw s:"myconfig.config" t:"transform.config" d:"myconfig.config" |
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. 🙂