Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 55049|Odpowiedź: 0

[Źródło] Różnica między kompilatorem Roslyn MSBuild

[Skopiuj link]
Opublikowano 21.03.2021 11:55:39 | | | |
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:

Debugowanie programów .NET za pomocą Notepada w domu na komputerze przez dziesięć lat
https://www.itsvse.com/thread-9419-1-1.html

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ą.





Poprzedni:ASP.NET Core (VI) DI ręcznie uzyskuje metodę wstrzykiwania obiektów
Następny:.NET/C# Emit generuje dynamicznie asemblery
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com