MSBuild: Microsoft Build Engine to platforma do tworzenia aplikacji. Ten silnik, znany również jako MSBuild, dostarcza schemat XML dla plików projektowych, który kontroluje, jak platforma budowania obsługuje i buduje oprogramowanie. Visual Studio używa MSBuild, ale MSBuild nie zależy od Visual Studio. Poprzez wywołanie msbuild.exe w pliku projektu lub rozwiązania, możesz planować i budować produkty w środowisku bez zainstalowanego Visual Studio.
Przedstawić:Logowanie do linku jest widoczne.
Barabala powiedział tak wiele, co widać już po nazwie – jest kompilatorem Microsoftu, czyli programuje projekty w programy wykonywalne itd.
Używany wcześniej, modyfikuj kod za pomocą notatnika txt, kompiluj ponownie za pomocą msbuild, w następujący sposób:
Roslynto otwartoźródłowy kompilator .NET firmy Microsoft Corporation. Kompilator obsługuje kompilację kodu w C# i Visual Basic oraz oferuje bogate API analizy kodu. Staramy się stworzyć nowy.NET framework 4.6projekt, korzystając z VS 2019, wygeneruje normalnie ustawienie MSBuild Project Generate Output Detail, jak pokazano na poniższym obrazku:
Kliknij prawym przyciskiem myszy na przedmiot, aby spróbować się zregenerować, jak pokazano poniżej:
1>------ Wszystkie odbudowy zostały zaińcowane: Projekt: ConsoleApp1, Konfiguracja: Debuguj dowolny procesor ------ 1> Godzina rozpoczęcia to 2021/3/21 11:38:08. 1>GenerateBindingRedirects: 1> W ResolveAssemblyReferences nie ma sugerowanych wiążących przekierowań. 1>GenerateTargetFrameworkMonikerAttribute: 1> pomija cel "GenerateTargetFrameworkMonikerAttribute", ponieważ wszystkie pliki wyjściowe są aktualne względem plików wejściowych. 1>CoreCompile: 1> C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702,2008 /fullpaths /nostdlib+ /platform: anycpu32bitpreferred /errorreport:prompt /warn:4 /define:DEBUG; TRACE /errorendlocation /preferreduilang:zh-CN /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\Microsoft.CSharp.dll" /referencja:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\mscorlib.dll" /referencja:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Core.dll" /referencja:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.DataSetExtensions.dll" /referencja:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.dll" /referencja:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.dll" /referencja:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Net.Http.dll" /referencja:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.dll" /referencja:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optymalizacja- /out:obj\Debug\ConsoleApp1.exe /subsystemversion:6.00 /target:exe /utf8output / deterministic+ /langversion:7.3 Program.cs Properties\AssemblyInfo.cs "obj\Debug\. NETFramework,Version=v4.6.AssemblyAttributes.cs" 1> Użycie kompilacji współdzielonej dla kompilatorów z katalogu tylnej kolumny: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn 1>_CopyAppConfigFile: 1> Kopiowanie plików z "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config" do "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe.config"。 1>KopiujPlikiDo KataloguWyjścia: 1> Kopiowanie plików z "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe" do "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe"。 1> ConsoleApp1 -> C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ConsoleApp1.exe 1> Kopiowanie plików z "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb" do "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.pdb"。 1> 1> zostało pomyślnie wygenerowane. 1> 0 ostrzeżeń 1> 0 błędów 1> 1> Czas 00:00:00.66 ========== Regeneruj wszystkich: 1 się udało, 0 nieudanych i 0 ========== pomijanych Pobrano z innych artykułów w Internecie, wyłącznie do celów odniesienia:
Wbudowany MSBuild w .NET Framework 4.0 nie rozpoznaje funkcji składni C# 6.0.
"MSBuild" => msbuild.exe, "Roslyn" => csc.exe
MSbuild to system budowania Visual Studio. Wywołuje kompilator C#, aby skompilować projekt C#. Roslyn to kompilator C# (oraz kompilator VB). Dlatego msbuild korzysta z Roslyn.
Jednak Roslyn zawiera coś więcej niż tylko kompilator. Zawiera też wtyczkę VS, która daje funkcje IDE (listy ukończeń, kolory, poprawki kodu itd.).
Dodatkowo Roslyn to API do analizy kodu źródłowego, które możesz wykorzystać we własnych aplikacjach. W tym ostatnim przypadku istnieje API o nazwie MSBuildWorkspace, które można wykorzystać do otwarcia projektu lub rozwiązania do analizy. Ten workspace wykorzystuje MSBuild do poznania wszystkich elementów projektu i rozwiązania. Dlatego ta część Roslin korzysta z MSBuild.
Streszczenie:
Z tego co rozumiem, MSBuild to zbiór kompilatorów Microsoftu i może nie jest odpowiedzialny za kompilację generowania, ale pomoże nam zadzwonić do Roslyn, by skompilować kod c#. Może także kompilować kod w innych językach, a następnie wywoływać inne odpowiadające mu kompilatory.
Przy kompilacji projektów w C# decyduje MSBuild, a Roslyn wykonawcą.
|