Využití MSBuild 4.0 Property Functions

MSBuild verze 4.0 přinesla mnoho novinek, kde jedna z velmi příjemných jsou Property Functions. Umožnují přímé volání statických metod některých tříd frameworku, jako například metody třídy Path nebo instance metod třídy String.

V případě že máme strukturu projektu, kde jsou soubory s MS build scripty v podadresáři a chceme vytvořit property s "root" adresářem který je o dvě úrovně výše, použijeme následující konstrukci:

[code:xml]

<PropertyGroup>
  <Path_Root>$(MSBuildProjectDirectory)\..\..</Path_Root>
</PropertyGroup>

[/code]

Toto je sice funkční, nicméně v logu buildu pak máme cesty k souborům poměrně nepřehledné. Například při volání RemoveDir tasku ve kterém komponujeme jméno adresáře pomocí property Path_Root:

Removing directory "C:\SVN\Source\Build\Scripts\..\..\Build\Deploy".

 

S použitím Property Functions lze snadno docílit lepšího výsledku, protože můžeme zavolat metodu Path.GetFullPath. Zápis property bude vypadat následovně:

[code:xml]

<PropertyGroup>
  <Path_Root>$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..'))</Path_Root>
</PropertyGroup>

[/code]

A v logu bude cesta již vypsána čitelněji jako:

Removing directory "C:\SVN\Source\Build\Deploy".

Komentáře jsou uzavřeny