Samouczek: korzystanie z programu MSBuild
MSBuild to platforma kompilacji dla firmy Microsoft i programu Visual Studio. W tym samouczku przedstawiono bloki konstrukcyjne programu MSBuild i pokazano, jak pisać, manipulować i debugować projekty MSBuild. Dowiesz się więcej o:
Tworzenie pliku projektu i manipulowanie nim.
Jak używać właściwości kompilacji.
Jak używać elementów kompilacji.
Program MSBuild można uruchomić z poziomu programu Visual Studio lub w oknie poleceń . W tym samouczku utworzysz plik projektu MSBuild przy użyciu programu Visual Studio. Plik projektu można edytować w programie Visual Studio i użyć okna poleceń , aby skompilować projekt i zbadać wyniki.
Instalowanie programu MSBuild
Jeśli masz program Visual Studio, masz już zainstalowany program MSBuild. Program Visual Studio 2019 lub nowszy jest instalowany w folderze instalacyjnym programu Visual Studio. W przypadku typowej instalacji domyślnej w systemie Windows 10 MSBuild.exe znajduje się w folderze instalacyjnym w MSBuild\Current\Bin.
Upewnij się, że w instalatorze wybrano narzędzia MSBuild dla używanych obciążeń, a następnie wybierz pozycję Zainstaluj.
MSBuild
Aby zainstalować program MSBuild w systemie, który nie ma programu Visual Studio, przejdź do Build Tools for Visual Studio 2019lub zainstaluj .NET SDK.
Jeśli masz program Visual Studio, masz już zainstalowany program MSBuild. Program Visual Studio 2022 jest instalowany w folderze instalacyjnym programu Visual Studio. W przypadku typowej instalacji domyślnej w systemie Windows 10 MSBuild.exe znajduje się w folderze instalacyjnym w MSBuild\Current\Bin.
W instalatorze programu Visual Studio przejdź do Poszczególne składnikii znajdź pole wyboru MSBuild. Jest on wybierany automatycznie po wybraniu dowolnego z innych obciążeń do zainstalowania.
Aby zainstalować program MSBuild w systemie, który nie ma programu Visual Studio, przejdź do strony Build Tools for Visual Studio 2022 na stronie pobierania . Innym sposobem pobrania programu MSBuild jest zainstalowanie zestawu SDK platformy .NET .
Tworzenie projektu MSBuild
System projektu programu Visual Studio jest oparty na programie MSBuild. Tworzenie nowego pliku projektu przy użyciu programu Visual Studio jest łatwe. W tej sekcji utworzysz plik projektu w języku C#. Zamiast tego możesz utworzyć plik projektu Visual Basic. W kontekście tego samouczka różnica między dwoma plikami projektu jest niewielka.
Aby utworzyć plik projektu
Otwórz program Visual Studio i utwórz projekt:
W polu wyszukiwania wpisz
winforms
, a następnie wybierz pozycję Utwórz nową aplikację Windows Forms (.NET Framework). W wyświetlonym oknie dialogowym wybierz pozycję Utwórz.W polu Nazwa projektu wpisz
BuildApp
. Wprowadź Location dla rozwiązania, na przykład D:\.Kliknij przycisk OK lub Utwórz, aby utworzyć plik projektu.
Sprawdzanie pliku projektu
W poprzedniej sekcji użyto programu Visual Studio do utworzenia pliku projektu w języku C#. Plik projektu jest reprezentowany w eksploratorze rozwiązań przez węzeł projektu o nazwie BuildApp. Edytor kodu programu Visual Studio umożliwia sprawdzenie pliku projektu.
Aby zbadać plik projektu
W eksploratorze rozwiązań kliknij węzeł projektu BuildApp.
W przeglądarce właściwości zwróć uwagę, że właściwość pliku projektu jest BuildApp.csproj. Wszystkie pliki projektu mają nazwę z sufiksem proj. Jeśli projekt języka Visual Basic został utworzony, nazwa pliku projektu będzie BuildApp.vbproj.
Ponownie kliknij prawym przyciskiem myszy węzeł projektu, a następnie kliknij Edytuj BuildApp.csproj.
Plik projektu zostanie wyświetlony w edytorze kodu.
Notatka
W przypadku niektórych typów projektów, takich jak C++, należy zwolnić projekt (kliknij prawym przyciskiem myszy plik projektu i wybierz pozycję Zwolnij projekt), zanim będzie można otworzyć i edytować plik projektu.
Cele i zadania
Pliki projektu to pliki w formacie XML z węzłem głównym Project.
Większość projektów platformy .NET ma atrybut Sdk
. Te projekty są nazywane projektami w stylu zestawu SDK. Odwołanie do zestawu SDK oznacza, że program MSBuild importuje zestaw plików, które zapewniają infrastrukturę kompilacji dla tego zestawu SDK. Jeśli nie odwołujesz się do żadnego zestawu SDK, nadal możesz używać programu MSBuild, po prostu nie będziesz automatycznie mieć wszystkich dostępnych właściwości i elementów docelowych specyficznych dla zestawu SDK.
<Project Sdk="Microsoft.NET.Sdk">
Istnieje wiele odmian SDK platformy .NET do celów specjalnych; są one opisane w SDK projektu .NET.
Prace nad tworzeniem aplikacji są wykonywane przy użyciu elementów Target i Task.
Zadanie to najmniejsza jednostka pracy, czyli "atom" kompilacji. Zadania to niezależne składniki wykonywalne, które mogą zawierać dane wejściowe i wyjściowe. W pliku projektu obecnie nie ma żadnych odwołań ani zdefiniowanych zadań. Zadania są dodawane do pliku projektu w poniższych sekcjach. Aby uzyskać więcej informacji, zobacz Tasks.
Cel to nazwana sekwencja zadań. Może to być nazwana sekwencja zadań, ale krytycznie reprezentuje coś do zbudowania lub wykonania, więc należy ją zdefiniować w sposób zorientowany na cel. Aby uzyskać więcej informacji, zobacz Cele.
Domyślny cel nie jest zdefiniowany w pliku projektu. Jest to określone zamiast tego w importowanych projektach. Element Import określa zaimportowane projekty. Na przykład w projekcie języka C# domyślny element docelowy jest importowany z pliku Microsoft.CSharp.targets.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Zaimportowane pliki są skutecznie wstawiane do pliku projektu, gdziekolwiek są odwołane.
W projektach w stylu zestawu SDK nie widać tego elementu importu, ponieważ atrybut zestawu SDK powoduje, że ten plik jest importowany niejawnie.
Program MSBuild śledzi cele kompilacji i gwarantuje, że każdy element docelowy jest kompilowany nie więcej niż raz.
Dodaj cel i zadanie
Dodaj element docelowy do pliku projektu. Dodaj zadanie do miejsca docelowego, które wyświetla komunikat.
Aby dodać element docelowy i zadania
Dodaj te wiersze do pliku projektu tuż po instrukcji Import lub otwarciu elementu project.
<Target Name="HelloWorld"> </Target>
Ten kod tworzy obiekt docelowy o nazwie HelloWorld. Zwróć uwagę, że podczas edytowania pliku projektu masz obsługę funkcji IntelliSense.
Dodaj wiersze do obiektu docelowego HelloWorld, aby wynikowa sekcja wyglądała następująco:
<Target Name="HelloWorld"> <Message Text="Hello"></Message> <Message Text="World"></Message> </Target>
Zapisz plik projektu.
Zadanie Message
jest jednym z wielu zadań dostarczanych z programem MSBuild. Aby zobaczyć pełną listę dostępnych zadań i informacji o ich użyciu, zobacz Referencja zadań.
Zadanie Message
przyjmuje wartość ciągu atrybutu Text
jako dane wejściowe i wyświetla je na urządzeniu wyjściowym (lub zapisuje go w co najmniej jednym dzienniku, jeśli ma to zastosowanie). Obiekt docelowy HelloWorld
wykonuje zadanie komunikatu dwa razy: najpierw, aby wyświetlić "Hello", a następnie "World".
Buduj cel
Jeśli spróbujesz skompilować ten projekt z poziomu programu Visual Studio, nie skompiluje zdefiniowanego obiektu docelowego. Dzieje się tak, ponieważ program Visual Studio wybiera domyślny element docelowy, który jest nadal elementem docelowym zaimportowanego pliku .targets
.
Uruchom program MSBuild w wierszu polecenia dewelopera developer dla programu Visual Studio, aby skompilować wcześniej zdefiniowany element docelowy HelloWorld. Użyj przełącznika wiersza polecenia -target
lub -t
, aby wybrać element docelowy.
Notatka
W poniższych sekcjach będziemy odnosić się do Wiersza poleceń dla deweloperów jako do Okna poleceń.
Aby skompilować obiekt docelowy:
Otwórz okno polecenia .
W polu wyszukiwania na pasku zadań zacznij wpisywać nazwę narzędzia, na przykład
dev
lubdeveloper command prompt
. Zostanie wyświetlona lista zainstalowanych aplikacji pasujących do wzorca wyszukiwania.Jeśli musisz go znaleźć ręcznie, plik znajduje się w folderze LaunchDevCmd.bat w folderze instalacji programu {Visual Studio}\Common7\Tools.
W oknie polecenia przejdź do folderu zawierającego plik projektu, w tym przypadku D:\BuildApp\BuildApp.
Uruchom program msbuild przy użyciu przełącznika poleceń
-t:HelloWorld
. To polecenie wybiera i kompiluje element docelowy HelloWorld:msbuild buildapp.csproj -t:HelloWorld
Sprawdź dane wyjściowe w oknie polecenia . Powinny zostać wyświetlone dwa wiersze "Hello" i "World":
Hello World
Notatka
Jeśli zamiast tego zobaczysz The target "HelloWorld" does not exist in the project
, prawdopodobnie nie pamiętasz zapisywania pliku projektu w edytorze kodu. Zapisz plik i spróbuj ponownie.
Naprzemiennie między edytorem kodu a oknem poleceń można zmienić plik projektu i szybko wyświetlić wyniki.
Właściwości budowania
Właściwości kompilacji to pary nazwa-wartość, które kierują procesem kompilacji. Kilka właściwości kompilacji jest już zdefiniowanych 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ą elementami podrzędnymi elementów PropertyGroup. Nazwa właściwości jest nazwą elementu podrzędnego, a wartość właściwości jest elementem tekstowym elementu podrzędnego. Na przykład
<TargetFrameworkVersion>net8.0</TargetFrameworkVersion>
definiuje właściwość o nazwie TargetFrameworkVersion
, nadając jej wartość ciągu "net8.0"
Właściwości kompilacji można ponownie zdefiniować w dowolnym momencie. Jeśli
<TargetFrameworkVersion>net6.0</TargetFrameworkVersion>
pojawi się później w pliku projektu lub w pliku zaimportowanym później w pliku projektu, a następnie TargetFrameworkVersion
przyjmuje nową wartość "net6.0"
Przebadanie wartości właściwości
Aby uzyskać wartość właściwości, użyj następującej składni, gdzie PropertyName
jest nazwą właściwości:
$(PropertyName)
Użyj tej składni, aby zbadać niektóre właściwości w pliku projektu.
Aby zbadać wartość właściwości
W edytorze kodu zastąp element docelowy HelloWorld następującym kodem:
<Target Name="HelloWorld"> <Message Text="Configuration is $(Configuration)" /> <Message Text="MSBuildToolsPath is $(MSBuildToolsPath)" /> </Target>
Zapisz plik projektu.
W oknie poleceń wprowadź i wykonaj następujący wiersz:
msbuild buildapp.csproj -t:HelloWorld
Sprawdź dane wyjściowe. Powinny zostać wyświetlone te dwa wiersze (dane wyjściowe mogą się różnić):
Configuration is Debug MSBuildToolsPath is C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
Configuration is Debug MSBuildToolsPath is C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild\16.0\Bin
Właściwości warunkowe
Wiele właściwości, takich jak Configuration
, są definiowane warunkowo, czyli atrybut Condition
pojawia się w elemecie właściwości. Właściwości warunkowe są definiowane lub ponownie definiowane tylko wtedy, gdy warunek ma wartość "true". Niezdefiniowane właściwości mają wartość domyślną pustego ciągu. Na przykład
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
oznacza "Jeśli właściwość Configuration nie została jeszcze zdefiniowana, zdefiniuj ją i nadaj jej wartość "Debuguj".
Prawie wszystkie elementy MSBuild mogą mieć atrybut Condition
. Aby uzyskać więcej informacji na temat używania atrybutu Condition
, zobacz Conditions.
Właściwości zarezerwowane
Program MSBuild rezerwuje niektóre nazwy właściwości do przechowywania informacji o pliku projektu i plikach binarnych MSBuild. MSBuildToolsPath jest przykładem właściwości zarezerwowanej. Do właściwości zarezerwowanych odwołuje się notacja $
jak każda inna właściwość. Aby uzyskać więcej informacji, zobacz Jak: Odwołać się do nazwy lub lokalizacji pliku projektu oraz Zarezerwowane i powszechnie znane właściwości MSBuild.
Zmienne środowiskowe
Do zmiennych środowiskowych można odwołać się w plikach projektu w taki sam sposób jak do właściwości kompilacji. Aby na przykład użyć zmiennej środowiskowej PATH
w pliku projektu, użyj $(Path
). Jeśli projekt zawiera definicję właściwości, 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 Instrukcje: używanie zmiennych środowiskowych w kompilacji.
Ustawianie właściwości z wiersza polecenia
Właściwości można zdefiniować w wierszu polecenia przy użyciu przełącznika wiersza polecenia -property
lub -p
. Wartości właściwości odebrane z wiersza polecenia zastępują wartości właściwości ustawione w pliku projektu i zmiennych środowiskowych.
Aby ustawić wartość właściwości z wiersza polecenia:
W oknie poleceń wprowadź i wykonaj następujący wiersz:
msbuild buildapp.csproj -t:HelloWorld -p:Configuration=Release
Sprawdź dane wyjściowe. Powinien zostać wyświetlony następujący wiersz:
Configuration is Release.
Program MSBuild tworzy właściwość Configuration i nadaje jej wartość "Release".
Znaki specjalne
Niektóre znaki mają specjalne znaczenie w plikach projektu MSBuild. Przykłady tych znaków obejmują średniki (;
) i gwiazdki (*
). Aby użyć tych znaków specjalnych jako literałów w pliku projektu, należy je określić przy użyciu składni %<xx>
, gdzie <xx>
reprezentuje wartość szesnastkową ASCII znaku.
Zmień zadanie 'Komunikat', aby wartość właściwości 'Konfiguracja' była bardziej czytelna, dodając znaki specjalne.
Aby użyć znaków specjalnych w zadaniu 'Wiadomość':
W edytorze kodu zastąp obie zadania 'Message' tym wierszem:
<Message Text="%24(Configuration) is %22$(Configuration)%22" />
Zapisz plik projektu.
W oknie poleceń wprowadź i wykonaj następujący wiersz:
msbuild buildapp.csproj -t:HelloWorld
Sprawdź dane wyjściowe. Powinien zostać wyświetlony następujący wiersz:
$(Configuration) is "Debug"
Aby uzyskać więcej informacji, zobacz znaki specjalne programu MSBuild.
Budowanie elementów
Element jest elementem informacji, zazwyczaj nazwą pliku, która jest używana jako dane wejściowe w systemie kompilacji. Na przykład kolekcja elementów reprezentujących pliki źródłowe może zostać przekazana do zadania o nazwie Compile w celu skompilowania ich do zestawu.
Wszystkie elementy to elementy podrzędne elementów ItemGroup. Nazwa elementu jest nazwą elementu podrzędnego, a wartość elementu jest wartością atrybutu Include elementu podrzędnego. Wartości elementów o tej samej nazwie są gromadzone w typy elementów tej samej nazwy. Na przykład
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
definiuje grupę elementów zawierającą dwa elementy. Typ elementu Compile ma dwie wartości: Program.cs i Properties\AssemblyInfo.cs.
Poniższy kod tworzy ten sam typ elementu, deklarując oba pliki w jednym atrybucie Include
, oddzielonych średnikiem.
<ItemGroup>
<Compile Include="Program.cs;Properties\AssemblyInfo.cs" />
</ItemGroup>
Aby uzyskać więcej informacji, zobacz Items.
Notatka
Ścieżki plików są powiązane z folderem zawierającym plik projektu MSBuild, nawet jeśli plik projektu jest zaimportowanym plikiem projektu. Istnieje kilka wyjątków, na przykład podczas używania elementów Import i UsingTask.
Sprawdzanie wartości typu elementu
Aby uzyskać wartości typu elementu, użyj następującej składni, gdzie ItemType
jest nazwą typu elementu:
@(ItemType)
Użyj tej składni, aby zbadać typ elementu Compile
w pliku projektu.
Aby zbadać wartości typu elementu:
W edytorze kodu zastąp zadanie docelowe HelloWorld następującym kodem:
<Target Name="HelloWorld"> <Message Text="Compile item type contains @(Compile)" /> </Target>
Zapisz plik projektu.
W oknie poleceń wprowadź i wykonaj następujący wiersz:
msbuild buildapp.csproj -t:HelloWorld
Sprawdź dane wyjściowe. Powinna zostać wyświetlona ta długa linia:
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ą domyślnie oddzielone średnikami.
Aby zmienić separator typu elementu, użyj następującej składni, gdzie ItemType jest typem elementu, a Separator jest ciągiem jednego lub kilku znaków oddzielających:
@(ItemType, Separator)
Zmień zadanie Message
, aby używać powrotów karetki i znaków nowej linii (%0A%0D), aby elementy kompilacji były wyświetlane jeden na wiersz.
Aby wyświetlić wartości typu elementu jeden na wiersz
W edytorze kodu zastąp zadanie Komunikat następującym wierszem:
<Message Text="Compile item type contains @(Compile, '%0A%0D')" />
Zapisz plik projektu.
W oknie poleceń wprowadź i wykonaj następujący wiersz:
msbuild buildapp.csproj -t:HelloWorld
Sprawdź dane wyjściowe. Powinny zostać wyświetlone następujące wiersze:
Compile item type contains Form1.cs Form1.Designer.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs
Dołączanie, wykluczanie i symbole wieloznaczne
Możesz użyć symboli wieloznacznych "*", "**" i "?" z atrybutem Include
, aby dodać elementy do typu elementu. Na przykład
<Photos Include="images\*.jpeg" />
dodaje wszystkie pliki z rozszerzeniem pliku .jpeg w folderze images do typu elementu Zdjęcia
<Photos Include="images\**\*.jpeg" />
Dodaje wszystkie pliki z rozszerzeniem pliku .jpeg w folderze images, a wszystkie jego podfoldery do typu elementu Zdjęcia. Aby uzyskać więcej przykładów, zobacz Jak: wybierać pliki do kompilacji.
Zwróć uwagę, że w miarę deklarowanych elementów są one dodawane do typu elementu. Na przykład
<Photos Include="images\*.jpeg" />
<Photos Include="images\*.gif" />
Tworzy typ elementu o nazwie Zdjęcie, który zawiera wszystkie pliki w images folder z rozszerzeniem pliku .jpeg
lub .gif
. Te wiersze są równoważne następującemu wierszowi:
<Photos Include="images\*.jpeg;images\*.gif" />
Element można wykluczyć z typu elementu za pomocą atrybutu Exclude
. Na przykład
<Compile Include="*.cs" Exclude="*Designer*">
Dodaje wszystkie pliki z rozszerzeniem pliku .cs do typu elementu Compile
, z wyjątkiem plików, których nazwy zawierają ciąg Designer. Aby uzyskać więcej przykładów, zobacz Jak wykluczyć pliki z kompilacji.
Atrybut Exclude
wpływa tylko na elementy dodane przez atrybut Include
w elemencie elementu, który je zawiera. Na przykład
<Compile Include="*.cs" />
<Compile Include="*.res" Exclude="Form1.cs">
nie wyklucza pliku Form1.cs, który został dodany w poprzednim elemencie elementu.
Aby uwzględnić i wykluczyć elementy
W edytorze kodu zastąp zadanie Komunikat następującym wierszem:
<Message Text="XFiles item type contains @(XFiles)" />
Dodaj tę grupę elementów tuż po elemencie Import:
<ItemGroup> <XFiles Include="*.cs;properties/*.resx" Exclude="*Designer*" /> </ItemGroup>
Zapisz plik projektu.
W oknie poleceń wprowadź i wykonaj następujący wiersz:
msbuild buildapp.csproj -t:HelloWorld
Sprawdź dane wyjściowe. Powinien zostać wyświetlony następujący wiersz:
XFiles item type contains Form1.cs;Program.cs;Properties/Resources.resx
Metadane elementu
Elementy mogą zawierać metadane oprócz informacji zebranych z atrybutów Include
i Exclude
. Zadania wymagające więcej informacji o elementach niż tylko wartość elementu mogą używać tych metadanych.
Metadane elementu są deklarowane w pliku projektu, tworząc element o nazwie metadanych jako element podrzędny elementu. Element może mieć zero lub więcej wartości metadanych. Na przykład następujący element CSFile zawiera metadane kultury o wartości "Fr":
<ItemGroup>
<CSFile Include="main.cs">
<Culture>Fr</Culture>
</CSFile>
</ItemGroup>
Aby uzyskać wartość metadanych typu elementu, użyj następującej składni, gdzie ItemType
jest nazwą typu elementu, a MetaDataName jest nazwą metadanych:
%(ItemType.MetaDataName)
Aby zbadać metadane elementu:
W edytorze kodu zastąp zadanie Komunikat następującym wierszem:
<Message Text="Compile.DependentUpon: %(Compile.DependentUpon)" />
Zapisz plik projektu.
W oknie poleceń wprowadź i wykonaj następujący wiersz:
msbuild buildapp.csproj -t:HelloWorld
Sprawdź dane wyjściowe. Powinny zostać wyświetlone następujące wiersze:
Compile.DependentUpon: Compile.DependentUpon: Form1.cs Compile.DependentUpon: Resources.resx Compile.DependentUpon: Settings.settings
Zwróć uwagę, że wyrażenie "Compile.DependentUpon" pojawia się kilka razy. Użycie metadanych z tą składnią w obiekcie docelowym powoduje "dzielenie na partie". Przetwarzanie wsadowe oznacza, że zadania w obiekcie docelowym są wykonywane raz dla każdej unikatowej wartości metadanych. Przetwarzanie wsadowe to odpowiednik skryptu MSBuild powszechnej w programowaniu konstrukcji "pętla foreach". Aby uzyskać więcej informacji, zobacz Batching.
Dobrze znane metadane
Za każdym razem, gdy element zostanie dodany do listy elementów, ten element zostanie przypisany do niektórych dobrze znanych metadanych. Na przykład %(Filename)
zwraca nazwę pliku dowolnego elementu. Aby uzyskać pełną listę dobrze znanych metadanych elementu, zobacz .
Aby zbadać dobrze znane metadane:
W edytorze kodu zastąp zadanie Komunikat następującym wierszem:
<Message Text="Compile Filename: %(Compile.Filename)" />
Zapisz plik projektu.
W oknie poleceń wprowadź i wykonaj następujący wiersz:
msbuild buildapp.csproj -t:HelloWorld
Sprawdź dane wyjściowe. Powinny zostać wyświetlone następujące wiersze:
Compile Filename: Form1 Compile Filename: Form1.Designer Compile Filename: Program Compile Filename: AssemblyInfo Compile Filename: Resources.Designer Compile Filename: Settings.Designer
Porównując dwa powyższe przykłady, widać, że chociaż nie każdy element w typie elementu Compile
ma metadane DependentUpon, wszystkie elementy mają dobrze znane metadane nazwy pliku.
Przekształcenia metadanych
Listy elementów można przekształcić w nowe listy elementów. Aby przekształcić listę elementów, użyj następującej składni, gdzie <ItemType>
jest nazwą typu elementu, a <MetadataName>
jest nazwą metadanych:
@(ItemType -> '%(MetadataName)')
Na przykład listę elementów plików źródłowych można przekształcić w kolekcję plików obiektów przy użyciu wyrażenia, takiego jak @(SourceFiles -> '%(Filename).obj')
. Aby uzyskać więcej informacji, zobacz Transforms.
Aby przekształcić elementy przy użyciu metadanych:
W edytorze kodu zastąp zadanie Komunikat następującym wierszem:
<Message Text="Backup files: @(Compile->'%(filename).bak')" />
Zapisz plik projektu.
W oknie poleceń wprowadź i wykonaj następujący wiersz:
msbuild buildapp.csproj -t:HelloWorld
Sprawdź dane wyjściowe. Powinien zostać wyświetlony następujący wiersz:
Backup files: Form1.bak;Form1.Designer.bak;Program.bak;AssemblyInfo.bak;Resources.Designer.bak;Settings.Designer.bak
Zwróć uwagę, że metadane wyrażone w tej składni nie powodują dzielenia na partie.
Następne kroki
Aby dowiedzieć się, jak utworzyć prosty plik projektu jeden krok naraz, w systemie Windows wypróbuj Utwórz plik projektu MSBuild od podstaw.
Jeśli używasz głównie zestawu .NET SDK, kontynuuj czytanie w sekcji dokumentacja MSBuild dla projektów .NET SDK.