Konfigurācijas transformācijas

Cik bieži ir nācies nogādāt pie klienta tīmekļa veida aplikāciju, kurai ir palicis vecais DEBUG režīma konfigurācijas fails, ar izslēgtiem customErrors vai <compilation/> debug=true slēdžiem? Ir gadījies.. :)

Tā lūk, jaunā studija piedāvā nebijušu iespēju – konfigurācijas failu transformāciju pakošanas laikā.

Pēc noklusējuma, kad pievienojam jaunu Web Application projektu, tiek izveidoti sekojoši transformācijas faili:

 

1

 

Debug un Release konfigurācijas failu transformācijas faili ir pievienoti automātiski, par cik jauns projekts tiek veidots ar šīm konfigurācijām. Ja pievienojam jaunu (izmantojot Configuration Manager), tad nospiežot labo taustiņu uz web.config faila ir pieejama komanda, kas pievienos trūkstošo konfigurāciju transformācijas failus:

 

2

 

Kā rezultātā iegūstam jaunu Web.Staging.config failu, kas pagaidām ir gandrīz tukšs:

 

3

 

Transformācijas faili ir tikai dizainēšanas laika faili un netiek nogādāti pie klienta vai uz ražošanas vidi. Ja nu tomēr gadās šos failus arī aizgādāt līdz ražošanas videi, tad šie faili nenodara nekādu ļaunu, jo izpildes režīmā šie faili netiek izmantoti un ASP.NET neļauj klientiem iegūt .config failu saturu.

Šajos transformācijas failos tiek rakstīta Xslt transformācijas, kuras ir nepieciešams veikt ar orģinālo web.config failu.

Xml vārdu telpa “XML-Document-Transform” satur divus jaunus atribūtus:

  • Transform – šis atribūts informē transformācijas dzinēju, kas tieši ir jāmaina web.config failā.
  • Locator – šis atribūts informē transformācijas dzinēju, kur tieši ir jāmaina web.config failā.

 

At the time of writing, Transform ir šādas iespējas:

  • Replace – iespējams aizvietot kādu konfigurācijas ierakstu (replace node);
  • Insert – iespējams ievietot kādu konfigurācijas ierakstu (insert node);
  • Delete – iespējams izdzēst kādu konfigurācijas ierakstu (delete node);
  • Remove Attribute – iespējams nodzēst kāda konfigurācijas ieraksta atribūtu (remove attribute);
  • Set Attribute - iespējams piešķirt vērtību kāda konfigurācijas ieraksta atribūtam (set attribute);

 

At the time of writing, Locator ir šādas iespējas:

  • Match – sameklēt kādu konfigurācijas ierakstu pēc atribūta vērtības;
  • Condition – nosacījumu konfigurācijas ieraksta meklēšana;
  • XPath – precīza konfigurācijas ieraksta sameklēšana pēc XPath izteiksmes;

 

Ar šīm zināšanām mēģināsim transformēt noklusēto web.config failu, kurā ir appSettings testa konfigurācijas ieraksts:

 

4

 

Pieņemsim, ka “Staging” izpildes konfigurācijā, nav nepieciešams rādīt verbose ziņojumus, kas nozīmē, ka ir jāveido transformācijas fails, kas šo vērtību no true pārliks uz false.

Vienkāršākais Web.Staging.config faila saturs ir attēlots zemāk:

 

5

 

Transformācijas dzinējs pēc sameklēts attiecīgos configuration/appSettings konfigurācijas ierakstus un pielietos transformāciju tikai showVerboseMessages ierakstam, par cik xdt:Locator norāda uz to, ka jāmeklē ir pēc key atribūta attiecīgais konfigurācijas ieraksts un jāveic ir pilnā ieraksta (node) aizvietošana par ko informē xdt:Transform atribūts.

Kā redzams, tad transformācijas fails nesatur nevienu citu konfigurācijas ierakstu, jo transformācijas dzinējs veic orģinālā faila un transformācijas faila apvienošanu (merge) transformācijas procesa laikā.

 

Kad ir izveidots transformācijas fails, ir iespējams veikt transformācijas vai nu no komandrindiņas vai arī no Visual Studio.

No komandrindiņas tas ir gaužām vienkārši (Start -> Program Files –> Visual Studio v10.0 –> Visual Studio tools –> Visual Studio 10.0 Command Prompt):

 

MSBuild “Path to Application project file (.csproj/.vbproj) ” /t:TransformWebConfig /p:Configuration=Staging

 

Kad būvējums ir pabeigts, jaunās konfigurācijas faili glabāsies obj/Staging direktorijā.

 

6

 

Aplūkojot failu redzams, ka transformācija ir izpildīta pareizi.

 

7

 

Ja web.config konfigurācijas faili ir izvietoti arī kādā no apakšdirektorijām, tad VS transformācijas dzinējs atbalsta arī šāda veida scenārijus un viss iepriekš minētais attiecas arī uz citiem web.config failiem projektā.

Nākamajos rakstos mēģināšu pastāstīt, ko tad īsti iesākt ar šo obj/<Configuration> direktoriju saturu un kā notiek Web Application nodošana klientam vai instalācija uz ražošanas vides izmantojot jaunās VS2010 iespējas.

 

Cerams, ka noderēs!

Published Thursday, April 02, 2009 7:53 AM by valdis.iljuconoks

Comments

# DcLnYbijQLJeRSsLM

tjR2TV I loved your blog.Really looking forward to read more.

Saturday, March 24, 2012 12:12 AM by google plus hangouts

Leave a Comment

(obligāts) 
(obligāts) 
(brīvizvēles)
(obligāts)