MsBuild podczas budowania paczki tworzy kilka plików. Jednym z nich jest tytułowy xml zawierający zmienne konfiguracyjne. Domyślnie zawiera podstawową, często niewystarczającą, kolekcje parametrów. Co zrobić aby mieć więcej parametrów w SetParameters.xml? Takie pytanie też sobie zadałem podczas ostatniego projektu. Dzisiaj przedstawiam jakie kroki należy podjąć, aby dostosować ten plik do rzeczywistości. Zapraszam serdecznie.

Paczka

Jeżeli zbudujesz projekt w trybie „Package”, przy pomocy MsBuild to jako rezultat otrzymasz pięć plików:

  • Projekt.deploy.cmd – plik uruchomieniowy diplojujący paczkę używający. Pod spodem używa MsDeploy
  • Projekt.deploy-readme.txt – krótka instrukcja jak poprawnie uruchomić powyższy plik
  • Projekt.SourceManifest.xml – plik używany jedynie podczas tworzenia paczki. Może zostać usunięty
  • Projekt.SetParameters.xml – plik z parametrami do nadpisania, czyli nasz dzisiejszy bohater
  • Projekt.zip – paczka właściwa, czyli odpowiednio poukładane dllki, widoki, konfigi itp.

Co zawiera plik SetParameters.xml

Jak samo rozszerzenie wskazuje, jest to plik XML. Natomiast jego zawartością są przygotowane podczas builda parametry. Służą one do konfiguracji środowiska podczas deploymentu aplikacji. Domyślnie w tym pliku dostępne są właściwości dla nazwy aplikacji na IIS oraz connectionStringi. W przypadku prostego projektu ten plik może wyglądać następująco:

Pojedynczy parametr składa się z dwóch atrybutów:

  • name – nazwa opisująca konkretny parametr
  • value – wartość jaka ma zostać ustawiona na docelowym środowisku

Więcej parametrów w SetParameters.xml

Jak widzisz, w takim podstawowym pliku nie ma zbyt wielu parametrów umożliwiających dostosowanie paczki do docelowego środowiska. Dla prostych aplikacji może to być wystarczające, jednak zazwyczaj okazuje się, że świat wymaga czegoś więcej. Jako przykład niech posłuży nam fragment pliku WebConfig w którym są dwie dodatkowe wartości: ApiUrl i SignalRUrl:

Są to adresy do jakiegoś API, ale to również mogą tam być klucze do serwera autentykacji, czy inne zmienne. Jak umożliwić ich sparametryzowanie, skoro domyślnie nie są dodawane do SetParameters.xml? O tym niżej.

parameters.xml

Należy do głównego katalogu z projektem dodać plik parameters.xml. Będzie on zawierać informacje o parametrach, które mogą być nadpisane podczas publikacji. Dla powyższego pliku może wyglądać następująco:

W jego skład wchodzą następujące właściwości

  • Parameter[name] – nazwa opisująca konkretny parametr, która będzie widoczna w pliku SetParameters.xml
  • kind – rodzaj transformacji w moim przypadku XmlFile, jeżeli potrzebujesz czegoś innego sięgnij do dokumentacji
  • scope – regex do pliku jaki ma być aktualizowany. Zazwyczaj może to być po prostu „Web.config”
  • match – XPath do wartości w pliku wskazanym w scope, która powinna być zaktualizowana

Nowy setParameters.xml

Po dodaniu takiego pliku i stworzeniu nowej paczki. SetParameters.xml będzie zaktualizowany o nowe wartości. Dzięki czemu podstawienie odpowiednich wartości będzie już tylko formalnością. Oto wynikowy plik:

Zakończenie

Jak widzisz dodanie dodatkowych parametrów konfiguracyjnych nie jest trudne. Chociaż przed zdobyciem tej wiedzy wydawało to się być trochę magiczne. Mam nadzieje, że ta wiedza Ci się przyda. Czy parametryzujesz swoje paczki w taki sposób? A może preferujesz inny sposób parametryzacji? Koniecznie mi o tym napisz. Czekam ;)



Podobało Ci się?

Zapisz się i nie przegap kolejnych postów.


Dodaj komentarz

Twój adres email nie zostanie opublikowany.

This site uses Akismet to reduce spam. Learn how your comment data is processed.