Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 55049|Răspunde: 0

[Sursă] Diferența dintre compilatorul Roslyn MSBuild

[Copiază linkul]
Postat pe 21.03.2021 11:55:39 | | | |
MSBuild: Microsoft Build Engine este o platformă pentru construirea aplicațiilor. Acest motor, cunoscut și sub numele de MSBuild, oferă o schemă XML pentru fișierele proiectului care controlează modul în care platforma de build gestionează și construiește software-ul. Visual Studio folosește MSBuild, dar MSBuild nu depinde de Visual Studio. Apelând msbuild.exe într-un fișier de proiect sau soluție, poți programa și construi produse într-un mediu fără Visual Studio instalat.

Prezenta:Autentificarea cu hyperlink este vizibilă.

Barabala a spus atât de multe, după cum se vede din nume, că este compilatorul Microsoft, adică programează proiecte în programe executabile, etc.

Folosit anterior, modificați codul folosind un bloc de notițe txt, recompilați cu msbuild, astfel:

Depanarea programelor .NET cu Notepad acasă pe un calculator timp de zece ani
https://www.itsvse.com/thread-9419-1-1.html

Roslyneste un compilator open-source .NET de la Microsoft Corporation. Compilatorul suportă compilarea codului în C# și Visual Basic și oferă API-uri bogate pentru analiza codului.
Încercăm să creăm unul nou.NET framework 4.6proiectul, folosind VS 2019, va genera în mod normal setarea MSBuild Project Generate Output Detail, așa cum se arată în imaginea de mai jos:



Faceți clic dreapta pe obiect pentru a încerca să se regenereze, așa cum se arată mai jos:



1>------ Toate reconstrucțiile au fost inițiate: Proiect: ConsoleApp1, Configurație: Depanare Orice CPU ------
1> Ora de start este 2021/03/21 11:38:08.
1>GenerateBindingRedirects:
1> Nu există redirecționări de legare sugerate în ResolveAssemblyReferences.
1>GenerateTargetFrameworkMonikerAttribute:
1> sare peste ținta "GenerateTargetFrameworkMonikerAttribute" deoarece toate fișierele de ieșire sunt actualizate în raport cu fișierele de intrare.
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" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Net.Http.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\ConsoleApp1.exe /subsystemversion:6.00 /target:exe /utf8output / deterministic+ /langversion:7.3 Program.cs Proprietăți\AssemblyInfo.cs "obj\Debug\. NETFramework,Version=v4.6.AssemblyAttributes.cs"
1> Folosește compilația partajată pentru compilatoare din directorul din coloana din spate: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
1>_CopyAppConfigFile:
1> Copierea fișierelor de la "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config" către "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe.config"。
1>CopyFilesToOutputDirectory:
1> Copierea fișierelor de la "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe" către "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> Copierea fișierelor de la "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb" către "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.pdb"。
1>
1> a fost generat cu succes.
1> 0 avertismente
1> 0 erori
1>
1> Timp scurs 00:00:00.66
========== Regenerează toate: 1 reușește, 0 eșuează și 0 ========== sărite

Descărcat din alte articole de pe Internet, doar pentru referință:


MSBuild integrat în .NET Framework 4.0 nu recunoaște caracteristicile sintaxei C# 6.0.

"MSBuild" => msbuild.exe, "Roslyn" => csc.exe

MSbuild este sistemul de build al Visual Studio. Acesta apelează compilatorul C# pentru a compila proiectul C#. Roslyn este un compilator C# (și compilator VB). Prin urmare, msbuild folosește Roslyn.

Totuși, Roslyn conține mai mult decât un simplu compilator. Include și un plugin VS care îți oferă funcții IDE (liste de finalizare, culori, corecții de cod etc.).

În plus, Roslyn este un API pentru analiza codului sursă, pe care îl poți folosi în propriile tale aplicații. Pentru ultimul caz, există un API numit MSBuildWorkspace care poate fi folosit pentru a deschide un proiect sau o soluție pentru analiză. Acest spațiu de lucru folosește MSBuild pentru a afla toate părțile unui proiect și soluție. Prin urmare, această parte a Roslin folosește MSBuild.


Rezumat:

Din câte știu, MSBuild este o colecție de compilatoare Microsoft și poate că nu este responsabil pentru compilarea generării, dar ne va ajuta să o chemăm pe Roslyn să compileze codul C#. De asemenea, poate compila cod în alte limbaje și apoi poate chema alți compilatori corespunzători.

Pentru compilarea proiectelor C#, MSBuild este decidența, iar Roslyn este executorul.





Precedent:ASP.NET Core (VI) DI obține manual metoda de injectare a obiectelor
Următor:.NET/C# Emit generează dinamic ansamblurile
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com