Vytváření inline tasků pomocí jazyka C# v MSBuild skriptech

Další příjemnou novinkou v MSBuild 4.0 je možnost vytvoření jednoduchého tasku přímým zápisem C# kódu do XML souboru MSBuild scriptu, aniž by se kvůli tomu musela vytvářet celá assembly. Toto bylo sice již dříve možné taskem Script z MSBuild Community Tasks, ovšem podpora ve verzi 4.0 umožňuje i předávání parametrů (včetně seznamů) do/z takového tasku.

Více v MSDN MSBuild Inline Tasks a v příkladu s předáváním parametrů Walkthrough: Creating an Inline Task odstavec Defining the RegX Task.

Chybové zprávy

Při experimentování se jistě povede vyrobit chybu v zapsaném C# kódu, tak že nejde vůbec přeložit. V takovém případě dojde k následující sekvenci chybových hlášek z MSBuildu:

error : The source file for this compilation can be found at: "...Temp\MSBUILDCodeTaskFactoryGeneratedFileab18fb75-b51d-459e-bd5c-f82fc5eebef2.txt"

error MSB3758: An error has occurred during compliation. ...Temp\jk2r21hx.0.cs(49,55) : error CS1026: ) expected

error MSB4175: The task factory "CodeTaskFactory" could not be loaded from the assembly "c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll". Object reference not set to an instance of an object.

V prvním souboru který zůstane v TEMP adresáři je vidět vygenerovaný C# kód tasku k překladu. Error MSB3758 obsahuje chybu z kompilátoru. Třetí error MSB4175 je poněkud komický, protože vyjímka Object reference not set to an instance of an object asi není přesně to, co by mělo při chybném překladu vzniknout Wink Nejedná se tedy o vyjímku ve vlastním C# kódu.

Komentáře jsou uzavřeny