Udostępnij za pośrednictwem


Instruktaż: Przy użyciu programu MSBuild

MSBuildPlatforma kompilacji jest dla firmy Microsoft i programu Visual Studio.W tym instruktażu wprowadza do bloków konstrukcyjnych programu MSBuild i pokazuje, jak napisać, manipulowania i debugowania projektów programu MSBuild.Omówiono następujące zagadnienia:

  • Służy do tworzenia i manipulowania pliku projektu.

  • Jak używać właściwości build

  • Jak używać elementów kompilacji.

Z programu Visual Studio lub w oknie polecenia, można uruchomić programu MSBuild.W tym instruktażu służy do tworzenia pliku projektu programu MSBuild przy użyciu programu Visual Studio.Edytuj plik projektu w programie Visual Studio i korzystać z okna poleceń do budowania projektu i przejrzeć wyniki.

Tworzenie projektu programu MSBuild

System Visual Studio projektu opiera się na program MSBuild.Ułatwia to utworzenie nowego pliku projektu przy użyciu programu Visual Studio.Ta sekcja służy do tworzenia pliku projektu programu Visual C#.Można zamiast tego utworzyć plik projektu programu Visual Basic.W kontekście tego instruktażu różnica między plikami projektów dwóch jest niewielkie.

Aby utworzyć plik projektu

  1. Otwórz program Visual Studio.

  2. Na pliku menu, wskaż Nowa, a następnie kliknij przycisk Projekt.

  3. W Nowy projekt okno dialogowe, wybierz Visual C# typ projektu, a następnie wybierz Aplikacji Windows Forms szablonu.W Nazwa wpisz BuildApp.Wprowadź miejsce rozwiązania, na przykład, D:\.Zaakceptuj ustawienia domyślne dla Utwórz katalog rozwiązania (zaznaczone), Dodaj do kontroli źródła (nie jest zaznaczone), i Nazwa rozwiązania (BuildApp).

    Kliknij przycisk OK do utworzenia pliku projektu.

Badanie pliku projektu

W poprzedniej sekcji użyto programu Visual Studio do utworzenia pliku projektu programu Visual C#.Plik projektu jest reprezentowane w Solution Explorer przez węzeł projekt o nazwie BuildApp.Edytor kodu Visual Studio umożliwia zbadanie dokumentacji projektu.

Aby przejrzeć plik projektu

  1. W Solution Explorer, kliknij węzeł projektu BuildApp.

  2. W Właściwości przeglądarki, należy zauważyć, że Plik projektu jest BuildApp.csproj.Wszystkie pliki projektu są nazywane z sufiksem "proj".Jeśli została utworzona projektu języka Visual Basic, nazwę pliku projektu będzie BuildApp.vbproj.

  3. Kliknij prawym przyciskiem myszy węzeł projektu, a następnie kliknij przycisk Unload projektu.

  4. Ponownie kliknij prawym przyciskiem myszy węzeł projektu, a następnie kliknij przycisk Edytować BuildApp.csproj.

    Plik projektu pojawia się w edytorze kodu.

Cele i zadania

Pliki projektu są pliki w formacie XML z węzła głównego Projekt.

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

Należy określić obszar nazw xmlns w elemencie projektu.

Budowanie aplikacji pracy odbywa się z docelowej i zadanie elementy.

  • Zadanie jest najmniejszą jednostką pracy, innymi słowy, "atom" kompilacji.Zadania są niezależne składniki wykonywalne, które mogą mieć wejść i wyjść.Nie ma żadnych zadań, obecnie lub odwołuje się zdefiniowane w pliku projektu.Dodaj zadania do pliku projektu w poniższych sekcjach.Aby uzyskać więcej informacji, zobacz Program MSBuild zadań tematu.

  • Cel jest nazwany sekwencji zadań.Istnieją dwa cele na końcu pliku projektu, które obecnie są ujęte w komentarze HTML: BeforeBuild i AfterBuild.

    <Target Name="BeforeBuild">
    </Target>
    <Target Name="AfterBuild">
    </Target>
    

    Aby uzyskać więcej informacji, zobacz Cele programu MSBuild tematu.

Węzeł projektu ma DefaultTargets atrybut opcjonalny, który wybiera cel domyślne do budowy, w tym przypadku budowy.

<Project ToolsVersion="4.0" DefaultTargets="Build" ...

Cel kompilacja nie jest zdefiniowany w pliku projektu.Zamiast tego jest importowany z pliku Microsoft.CSharp.targets za pomocą importu element.

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

Importowane pliki skutecznie są wstawiane do pliku projektu, wszędzie tam, gdzie są one wywoływane.

Program MSBuild śledzi cele kompilacji i gwarantuje, że każdego obiektu docelowego jest wbudowana w nie więcej niż jeden raz.

Dodawanie elementu docelowego i zadania

Dodawanie elementu docelowego pliku projektu.Dodać zadanie do obiektu docelowego, który drukuje wiadomość.

Aby dodać cel i zadania

  1. Dodać te linie do pliku projektu tylko po instrukcji Import:

    <Target Name="HelloWorld">
    </Target>
    

    Tworzy element docelowy o nazwie HelloWorld.Należy zauważyć, że obsługę technologii Intellisense podczas edycji pliku projektu.

  2. Dodać wiersze do docelowej HelloWorld, tak, że sekcja wynikowy wygląda następująco:

    <Target Name="HelloWorld">
      <Message Text="Hello"></Message>
      <Message Text="World"></Message>
    </Target>
    
  3. Zapisz plik projektu.

Zadanie wiadomości jest jednym z wielu zadań, które jest dostarczany z MSBuild.Aby uzyskać pełną listę dostępnych zadań i informacje o sposobie użycia, zobacz Zadanie programu MSBuild odniesienia.

Zadanie wiadomości ma wartość string atrybutu tekstu jako dane wejściowe i wyświetla je na urządzenie wyjściowe.Cel HelloWorld wykonuje zadanie wiadomości dwa razy: po pierwsze, aby wyświetlić "Hello", a następnie do wyświetlania "World".

Tworzenie obiektu docelowego

Uruchom program MSBuild z wiersza polecenia usługi Visual Studio do budowy docelowego HelloWorld określonych powyżej.Użyj przełącznika wiersza polecenia/TARGET lub /t wybierz miejsce docelowe.

[!UWAGA]

Odnoszą się do wiersza polecenia usługi Visual Studio jako Okno polecenia w poniższych sekcjach.

Tworzenie obiektu docelowego

  1. Kliknij przycisk Start, a następnie kliknij przycisk Wszystkie programy.Zlokalizuj i kliknij przycisk wiersza polecenia usługi Visual Studio w Visual Studio Tools folder.

  2. W oknie polecenia przejdź do folderu zawierającego plik projektu, w tym przypadku D:\BuildApp\BuildApp.

  3. Uruchom program msbuild z /t:HelloWorld przełącznika polecenia.Wybiera i miejsce docelowe HelloWorld tworzy:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Przeanalizuj wyjście w okno polecenia.Powinieneś zobaczyć dwie linie, "Witaj" i "Świecie":

    Hello
    World
    

[!UWAGA]

Jeśli zamiast zobacz The target "HelloWorld" does not exist in the project , a następnie prawdopodobnie zapomniałem zapisać plik projektu w edytorze kodu.Zapisz plik i spróbuj ponownie.

Przez zmianę w edytorze kodu i okno polecenia, można zmienić plik projektu i szybko zobaczyć wyniki.

[!UWAGA]

Po uruchomieniu programu msbuild bez przełącznika polecenia/t, msbuild buduje docelowej przez atrybut DefaultTarget element projektu, w tym przypadku "Build".Opiera się na wniosek Windows Forms BuildApp.exe.

Tworzenie właściwości

Właściwości budowy są pary nazwa wartość, które poprowadzą kompilacji.Kilka właściwości build zostały już zdefiniowane w górnej części pliku projektu:

<PropertyGroup>
...
  <ProductVersion>10.0.11107</ProductVersion>
  <SchemaVersion>2.0</SchemaVersion>
  <ProjectGuid>{30E3C9D5-FD86-4691-A331-80EA5BA7E571}</ProjectGuid>
  <OutputType>WinExe</OutputType>
...
</PropertyGroup>

Wszystkie właściwości są elementy podrzędne elementów PropertyGroup.Nazwa właściwości jest nazwa elementu podrzędnego, a wartość właściwości jest element tekstu elementu podrzędnego.Na przykład:

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

Definiuje właściwości o nazwie TargetFrameworkVersion, nadając jej wartość ciągu "v4.0".

Tworzenie właściwości mogą być zmieniane w dowolnym momencie.Jeśli

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

pojawi się później w pliku projektu lub w pliku przywożone później w pliku projektu, a następnie TargetFrameworkVersion ma nową wartość "v3.5".

Badanie wartości właściwości

Aby uzyskać wartość właściwości, należy użyć następującej składni, gdzie PropertyName jest nazwa właściwości:

$(PropertyName)

Należy użyć następującej składni, aby zbadać niektóre właściwości w pliku projektu.

Aby zbadać wartość właściwości

  1. Z edytora kodu zastąpić docelowy HelloWorld ten kod:

    <Target Name="HelloWorld">
      <Message Text="Configuration is $(Configuration)" />
      <Message Text="MSBuildToolsPath is $(MSBuildToolsPath)" />
    </Target>
    
  2. Zapisz plik projektu.

  3. Z Okno polecenia, wpisać i wykonać ten wiersz:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Przeanalizuj wyjście.Powinieneś zobaczyć te dwie linie (wersja.NET Framework mogą się różnić):

    Configuration is Debug
    MSBuildToolsPath is C:\Windows\Microsoft.NET\Framework\v4.0.20317
    

[!UWAGA]

Jeśli nie widać, wiersze te następnie prawdopodobnie zapomniałem zapisać plik projektu w edytorze kodu.Zapisz plik i spróbuj ponownie.

Dd393573.collapse_all(pl-pl,VS.110).gifWłaściwości warunkowych

Zdefiniowano wiele właściwości, takie jak konfiguracja warunkowo, oznacza to, że atrybut warunek pojawia się w elemencie właściwość.Właściwości warunkowych są zdefiniowane i określenia na nowo tylko wtedy, gdy stan ma wartość "true".Należy zauważyć, że podane są właściwości niezdefiniowana wartość domyślna pusty ciąg.Na przykład:

<Configuration   Condition=" '$(Configuration)' == '' ">Debug</Configuration>

oznacza "Jeśli właściwość konfiguracji nie zostało jeszcze zdefiniowane, zdefiniuj go i nadać mu wartość"Debug"".

Prawie wszystkie elementy programu MSBuild może mieć atrybut warunku.Aby uzyskać więcej dyskusji na temat przy użyciu atrybutu warunku, zobacz Program MSBuild warunki.

Dd393573.collapse_all(pl-pl,VS.110).gifWłaściwości zastrzeżonych

MSBuildrezerwuje niektóre nazwy właściwości, do przechowywania informacji o pliku projektu i MSBuild pliki binarne.MSBuildToolsPath jest przykładem zarezerwowanej właściwości (nowy program MSBuild 3.5).Za pomocą notacji $, podobnie jak wszystkie inne właściwości odwołuje się do właściwości zastrzeżonych.Aby uzyskać więcej informacji, zobacz Jak: odwołują się nazwa lub lokalizacja pliku projektu i Program MSBuild zarezerwowanych właściwości.

Dd393573.collapse_all(pl-pl,VS.110).gifZmienne środowiskowe

Odniesienia zmiennych środowiskowych w plikach programu project można taki sam sposób, jak zbudować właściwości.Na przykład aby użyć zmiennej środowiskowej PATH w pliku projektu, należy użyć $(ścieżka).Jeśli projekt zawiera definicję właściwość, która ma taką samą nazwę jak zmienna środowiskowa, właściwość w projekcie zastępuje wartość zmiennej środowiskowej.Aby uzyskać więcej informacji, zobacz Jak: używać zmiennych środowiskowych w kompilacji.

Ustawianie właściwości z wiersza polecenia

Właściwości może być określona w wierszu polecenia przy użyciu przełącznika wiersza polecenia /property lub /p.Wartości właściwości odebranych z wiersza polecenia zastępują wartości właściwości w projekcie pliku i zmienne środowiskowe.

Aby ustawić wartość właściwości z wiersza polecenia

  1. Z Okno polecenia, wpisać i wykonać ten wiersz:

    msbuild buildapp.csproj /t:HelloWorld /p:Configuration=Release
    
  2. Przeanalizuj wyjście.Powinieneś zobaczyć ten wiersz:

    Configuration is Release.
    

Program MSBuild tworzy właściwość konfiguracji i nadaje mu wartość "Zwolnienie".

Znaki specjalne

Niektóre znaki mają specjalne znaczenie w plikach programu project MSBuild.Przykłady te znaki średnikami (;) i gwiazdki **.Aby korzystać z tych znaków specjalnych, jako literały w pliku projektu, musi być określona przy użyciu składni % xx, gdzie xx oznacza szesnastkowej wartości znaku ASCII.

Zmiana zadania wiadomość, Pokaż wartości właściwości konfiguracji za pomocą znaków specjalnych, aby uczynić go bardziej czytelnym.

Aby używać znaków specjalnych w zadanie wiadomości

  1. Od edytora kodu zastępuje obu zadań wiadomości z tej linii:

    <Message Text="%24(Configuration) is %22$(Configuration)%22" />
    
  2. Zapisz plik projektu.

  3. Z Okno polecenia, wpisać i wykonać ten wiersz:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Przeanalizuj wyjście.Powinieneś zobaczyć ten wiersz:

    $(Configuration) is "Debug"
    

Aby uzyskać więcej informacji, zobacz Znaki specjalne programu MSBuild.

Tworzenie elementów

Element znajduje się fragment informacji, zazwyczaj nazwę pliku, który jest używany jako dane wejściowe do kompilacji systemu.Na przykład kolekcja elementów reprezentujących pliki źródłowe może zostać przekazane do zadania o nazwie kompilacji do kompilacji w zespół.

Wszystkie elementy są elementy podrzędne elementów ItemGroup.Nazwa elementu jest nazwa elementu podrzędnego, a wartość elementu jest wartość atrybutu Dołącz elementu podrzędnego.Wartości elementów o tej samej nazwie są zbierane do typów elementów tej nazwy.Na przykład:

<ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>

Określa grupę towarów zawierających dwa elementy.Typ elementu kompilacji ma dwie wartości: "Program.cs" i "Properties\AssemblyInfo.cs".

Poniższy kod tworzy ten sam typ elementu, oświadczając, oba pliki w jeden atrybut Include, oddzielone średnikami.

<ItemGroup>
    <Compile Include="Program.cs;Properties\AssemblyInfo.cs" />
</ItemGroup>

Aby uzyskać więcej informacji, zobacz Program MSBuild elementów.

[!UWAGA]

Ścieżki plików są w stosunku do folderu zawierającego plik projektu programu MSBuild.

Badanie wartości typu towaru

Aby uzyskać wartości typu elementu, należy użyć następującej składni, gdzie ItemType jest nazwą typu elementu:

@(ItemType)

Zbadanie typ elementu kompilacji w pliku projektu, należy użyć następującej składni.

Aby sprawdzić typ elementu wartości

  1. Z edytora kodu Zastąp HelloWorld zadanie cel ten kod:

    <Target Name="HelloWorld">
      <Message Text="Compile item type contains @(Compile)" />
    </Target>
    
  2. Zapisz plik projektu.

  3. Z Okno polecenia, wpisać i wykonać ten wiersz:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Przeanalizuj wyjście.Powinieneś zobaczyć ten długi wiersz:

    Compile item type contains Form1.cs;Form1.Designer.cs;Program.cs;Properties\AssemblyInfo.cs;Properties\Resources.Designer.cs;Properties\Settings.Designer.cs
    

Wartości typu elementu są oddzielone średnikami domyślnie.

Aby zmienić separator typu elementu, należy użyć następującej składni, gdzie ItemType jest typ elementu, a separatorem jest ciąg znaków oddzielające jednego lub więcej:

@(ItemType, Separator)

Zmiana zadania wiadomości, użyj znaki powrotu karetki, a wiersz źródła danych (% 0A % 0 D) aby wyświetlić kompilacji elementów jeden na wiersz.

Aby wyświetlić element typu wartości, jeden na wiersz

  1. Od edytora kodu zastępuje zadanie wiadomości z tej linii:

    <Message Text="Compile item type contains @(Compile, '%0A%0D')" />
    
  2. Zapisz plik projektu.

  3. Z Okno polecenia, wpisać i wykonać ten wiersz:

    msbuild buildapp.csproj /t:HelloWorld

  4. Przeanalizuj wyjście.Powinieneś zobaczyć te wiersze:

    Compile item type contains Form1.cs
    Form1.Designer.cs
    Program.cs
    Properties\AssemblyInfo.cs
    Properties\Resources.Designer.cs
    Properties\Settings.Designer.cs
    

Dd393573.collapse_all(pl-pl,VS.110).gifTo, wykluczania i symboli wieloznacznych

Można użyć symboli wieloznacznych "*", "wytwarzanie", i "?" z atrybutem Dołącz, aby dodać elementy do typu elementu.Na przykład:

<Photos Include="images\*.jpeg" />

dodaje wszystkie pliki z rozszerzeniem ".jpeg" w folderze obrazy typu elementu zdjęcia, podczas gdy

<Photos Include="images\**.jpeg" />

dodaje wszystkie pliki z rozszerzeniem ".jpeg" w folderze Obrazy i wszystkie jego podfoldery, typ elementu zdjęcia.Aby uzyskać więcej przykładów, zobacz Jak: Wybierz pliki do kompilacji.

Należy zauważyć, że elementy są deklarowane są one dodawane do typ elementu.Na przykład:

<Photos Include="images\*.jpeg" />
<Photos Include="images\*.gif" />

Tworzy typ elementu o nazwie zdjęcie zawierające wszystkie pliki w folderze obrazów z rozszerzeniem ".jpeg" lub ".gif".Jest to równoważne następujący wiersz:

<Photos Include="images\*.jpeg;images\*.gif" />

Element można wykluczyć z typu elementu z atrybutem wykluczania.Na przykład:

<Compile Include="*.cs" Exclude="*Designer*">

dodaje wszystkie pliki z rozszerzeniem".cs" do elementu kompilacji typu, z wyjątkiem plików, których nazwy zawierają ciąg "Projektanta".Aby uzyskać więcej przykładów, zobacz Jak: wykluczanie plików z kompilacji.

Atrybut Wyklucz dotyczy tylko dodawane przez atrybut Include w elementu element, który zawiera oba te elementy.Na przykład:

<Compile Include="*.cs" />
<Compile Include="*.res" Exclude="Form1.cs">

nie wyklucza pliku Form1.cs, który został dodany w elemencie elementu.

Dołączenie i wykluczenie elementów

  1. Od edytora kodu zastępuje zadanie wiadomości z tej linii:

    <Message Text="Compile item type contains @(XFiles)" />
    
  2. Dodać tę grupę element po elemencie Import:

    <ItemGroup>
       <XFiles Include="*.cs;properties/*.resx" Exclude="*Designer*" />
    </ItemGroup>
    
  3. Zapisz plik projektu.

  4. Z Okno polecenia, wpisać i wykonać ten wiersz:

    msbuild buildapp.csproj /t:HelloWorld
    
  5. Przeanalizuj wyjście.Powinieneś zobaczyć ten wiersz:

    Compile item type contains Form1.cs;Program.cs;Properties/Resources.resx
    

Element metadanych

Elementy mogą zawierać metadane, oprócz informacji zebranych od atrybutów dołączania i wykluczania.Metadane można za pomocą zadań, które wymagają więcej informacji na temat elementów niż tylko wartość elementu.

Metadane elementu jest zadeklarowany w pliku projektu przez utworzenie elementu o nazwie metadane jako element podrzędny elementu.Element może mieć zero lub więcej wartości metadanych.Na przykład następujący element CSFile ma metadane kultury o wartości "Fr":

<ItemGroup>
    <CSFile Include="main.cs">
        <Culture>Fr</Culture>
    </CSFile>
</ItemGroup>

Aby uzyskać wartość metadanych typu elementu, należy użyć następującej składni, gdzie ItemType jest nazwa typu elementu, a MetaDataName to nazwa metadanych:

%(ItemType.MetaDataName)

Zbadanie metadanych elementu

  1. Od edytora kodu zastępuje zadanie wiadomości z tej linii:

    <Message Text="Compile.DependentUpon: %(Compile.DependentUpon)" />
    
  2. Zapisz plik projektu.

  3. Z Okno polecenia, wpisać i wykonać ten wiersz:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Przeanalizuj wyjście.Powinieneś zobaczyć te wiersze:

    Compile.DependentUpon:
    Compile.DependentUpon: Form1.cs
    Compile.DependentUpon: Resources.resx
    Compile.DependentUpon: Settings.settings
    

Zauważ, jak wyrażenie "Compile.DependentUpon" pojawia się kilka razy.Korzystanie z metadanych z następującej składni w elemencie docelowym powoduje, "Grupowanie".Grupowanie oznacza zadań w miejsce docelowe są wykonywane raz dla każdej wartości unikatowe metadane.To jest równoważne skrypt MSBuild wspólnej "pętli" for programowania konstrukcji.Aby uzyskać więcej informacji, zobacz Program MSBuild tworzenie pakietów wsadowych..

Dd393573.collapse_all(pl-pl,VS.110).gifDobrze znane metadanych

W każdym przypadku, gdy element jest dodawany do listy elementów, że zostanie przypisany niektórych znanych metadanych.Na przykład %(Filename) zwraca nazwę pliku dowolnego elementu.Aby uzyskać pełną listę znanych metadane, zobacz Program MSBuild znanych metadanych elementu.

Zbadanie znanych metadanych

  1. Od edytora kodu zastępuje zadanie wiadomości z tej linii:

    <Message Text="Compile Filename: %(Compile.Filename)" />
    
  2. Zapisz plik projektu.

  3. Z Okno polecenia, wpisać i wykonać ten wiersz:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Przeanalizuj wyjście.Powinieneś zobaczyć te wiersze:

    Compile Filename: Form1
    Compile Filename: Form1.Designer
    Compile Filename: Program
    Compile Filename: AssemblyInfo
    Compile Filename: Resources.Designer
    Compile Filename: Settings.Designer
    

Przez porównanie dwóch powyższych przykładach, można zobaczyć, że podczas, gdy nie każdy element typu elementu kompilacji ma DependentUpon metadane, wszystkie elementy mają znanych metadanych pliku.

Dd393573.collapse_all(pl-pl,VS.110).gifTransformacje metadanych

Element listy może być przekształcona w nową list elementów.Aby przekształcić listy elementów, należy użyć następującej składni, gdzie ItemType jest nazwa typu elementu, a MetadataName to nazwa metadanych:

@(ItemType -> '%(MetadataName)')

Na przykład, listy elementów źródłowych plików może być przekształcona w taki sposób, w kolekcji plików obiektu za pomocą wyrażeń, takich jak @(SourceFiles -> '%(Filename).obj').Aby uzyskać więcej informacji, zobacz Transformacje MSBuild.

Aby przekształcić elementy przy użyciu metadanych

  1. Od edytora kodu zastępuje zadanie wiadomości z tej linii:

    <Message Text="Backup files: @(Compile->'%(filename).bak')" />
    
  2. Zapisz plik projektu.

  3. Z Okno polecenia, wpisać i wykonać ten wiersz:

    msbuild buildapp.csproj /t:HelloWorld
    
  4. Przeanalizuj wyjście.Powinieneś zobaczyć ten wiersz:

    Backup files: Form1.bak;Form1.Designer.bak;Program.bak;AssemblyInfo.bak;Resources.Designer.bak;Settings.Designer.bak
    

Należy zauważyć, że metadane, wyrażone w tej składni nie powoduje grupowanie.

Co to jest dalej?

Aby dowiedzieć się, jak utworzyć plik prosty projekt jeden krok w czasie, wypróbować Instruktaż: Tworzenie pliku projektu programu MSBuild od początku.

Zobacz też

Inne zasoby

Program MSBuild

Program MSBuild odniesienia