Dostosowywanie systemu kompilacji

Ta Microsoft Build Engine to platforma do tworzenia aplikacji. Aparat, znany również jako MSBuild, został opracowany przez firmę Microsoft i umożliwia tworzenie aplikacji .NET. W platformie Mono jest również implementacja aparatu kompilacji firmy Microsoft o nazwie xbuild. W tej chwili jednak program xbuild został wycofany na rzecz używania MSBuild we wszystkich systemach operacyjnych.

MSBuild jest używany jako system kompilacji dla projektów w programie Visual Studio dla komputerów Mac i działa przez przyjęcie zestawu danych wejściowych, takich jak pliki źródłowe, i przekształca je do danych wyjściowych, takich jak pliki wykonywalne. Osiąga te dane wyjściowe przez wywołania narzędzi, takich jak kompilator.

MSBuild pliku

MSBuild używa pliku XML nazywanego plikiem projektu, który definiuje elementy, które są częścią projektu (takie jak zasoby obrazów) i właściwości wymagane do skompilowania projektu. Ten plik projektu zawsze będzie miał rozszerzenie kończące się na proj , na przykład dla projektów języka .csproj C#.

Wyświetlanie MSBuild plików

Znajdź plik MSBuild, klikając prawym przyciskiem myszy nazwę projektu i wybierając polecenie Reveal in Finder (Ujawnij w programie Finder). W oknie wyszukiwania zostaną wyświetlone wszystkie pliki i foldery powiązane z projektem, w tym plik , jak pokazano na .csproj poniższej ilustracji:

Lokalizacja csproj w programie Finder

Aby wyświetlić plik na nowej karcie w Visual Studio dla komputerów Mac, kliknij prawym przyciskiem myszy nazwę projektu i przejdź do menu .csproj Narzędzia > Edytuj plik:

otwieranie pliku csproj w edytorze źródłowym

Kompozycja pliku MSBuild plików

Wszystkie MSBuild zawierają obowiązkowy element Project główny, w taki sposób:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

Zwykle projekt importuje również .targets plik. Ten plik zawiera wiele reguł opisujących sposób przetwarzania i kompilowania różnych plików. Import jest zwykle wyświetlany w dolnej części pliku, a w przypadku projektów proj języka C# wygląda to podobnie do tego:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

Plik targets jest innym plikiem MSBuild docelowego. Ten plik zawiera MSBuild, który jest wielokrotnego użytku w wielu projektach. Na przykład plik , który znajduje się w katalogu reprezentowanym przez właściwość (lub zmienną), zawiera logikę tworzenia zestawów języka C# z plików Microsoft.CSharp.targets MSBuildBinPath źródłowych języka C#.

Elementy i właściwości

Istnieją dwa podstawowe typy danych w MSBuild: elementy i właściwości , które opisano bardziej szczegółowo w poniższych sekcjach.

Właściwości

Właściwości to pary klucz/wartość, które są używane do przechowywania ustawień, które mają wpływ na kompilację, takich jak opcje kompilatora.

Są one ustawiane przy użyciu właściwości PropertyGroup i mogą zawierać dowolną liczbę grup właściwości, które mogą zawierać dowolną liczbę właściwości.

Na przykład właściwość PropertyGroup dla prostej aplikacji konsolowej może wyglądać podobnie do następującego kodu XML:

<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
    <ProjectGuid>{E248730E-1393-43CC-9183-FFA42F63BE81}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <RootNamespace>refactoring</RootNamespace>
    <AssemblyName>refactoring</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>

Właściwości mogą być określane z wyrażeń przy użyciu $() składni . Na przykład $(Foo) zostanie oceniona jako wartość Foo właściwości . Jeśli właściwość nie została ustawiona, zostanie oceniona jako pusty ciąg bez żadnego błędu.

Elementy

Elementy zapewniają sposób pracy z wejściami do systemu kompilacji jako listami lub zestawami i zazwyczaj reprezentują pliki. Każdy element ma typ elementu, specyfikację elementu i opcjonalne dowolne metadane. Należy pamiętać MSBuild że program nie działa na poszczególnych elementach, przyjmuje wszystkie elementy danego typu nazywanego zestawem elementów

Elementy są tworzone przez zadeklarowanie ItemGroup . Może być dowolna liczba elementów ItemGroup, które mogą zawierać dowolną liczbę elementów.

Na przykład poniższy fragment kodu tworzy ekrany uruchamiania systemu iOS. Ekrany uruchamiania mają typ BundleResource kompilacji , ze specyfikacją jako ścieżką do obrazu:

 <ItemGroup>
    <BundleResource Include="Resources\Default-568h%402x.png" />
    <BundleResource Include="Resources\Default%402x.png" />
    <BundleResource Include="Resources\Default.png" />
    <BundleResource Include="Resources\Default-Portrait.png" />
    <BundleResource Include="Resources\Default-Portrait%402x.png" />
    <BundleResource Include="Resources\Default-Landscape%402x.png" />
  </ItemGroup>

Zestawy elementów mogą być określane z wyrażeń przy użyciu @() składni . Na przykład element zostanie oceniony jako zestaw elementów BundleResource, co oznacza wszystkie @(BundleResource) elementy BundleResource. Jeśli nie ma żadnych elementów tego typu, będzie on pusty bez żadnego błędu.

Zasoby do nauki MSBuild

Następujące zasoby mogą służyć do bardziej szczegółowych informacji MSBuild o nich: