Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 55049|Risposta: 0

[Fonte] La differenza tra il compilatore Roslyn MSBuild

[Copiato link]
Pubblicato su 21/03/2021 11:55:39 | | | |
MSBuild: Il Microsoft Build Engine è una piattaforma per la creazione di applicazioni. Questo motore, noto anche come MSBuild, fornisce uno schema XML per i file di progetto che controlla come la piattaforma di compilazione gestisce e costruisce il software. Visual Studio usa MSBuild, ma MSBuild non dipende da Visual Studio. Chiamando msbuild.exe in un progetto o file di soluzione, puoi programmare e costruire prodotti in un ambiente senza Visual Studio installato.

Introdurre:Il login del link ipertestuale è visibile.

Barabala ha detto molto, come si può vedere dal nome, che è il compilatore di Microsoft, cioè programmando progetti in programmi eseguibili, ecc.

Usato in precedenza, modifica il codice usando il blocco note txt, ricompila con msbuild, come segue:

Debug di programmi .NET con Notepad a casa su un computer per dieci anni
https://www.itsvse.com/thread-9419-1-1.html

Roslynè un compilatore .NET open-source della Microsoft Corporation. Il compilatore supporta la compilazione di codice in C# e Visual Basic e fornisce API di analisi del codice avanzate.
Cerchiamo di crearne uno nuovo.NET framework 4.6il progetto, utilizzando VS 2019, genererà normalmente l'impostazione MSBuild Project Generate Output Detail, come mostrato nell'immagine qui sotto:



Clicca con il tasto destro sull'oggetto per provare a rigenerarlo, come mostrato qui sotto:



1>------ Tutte le ricostruzioni sono state avviate: Progetto: ConsoleApp1, Configurazione: Debug qualsiasi CPU ------
1> L'orario di partenza è 2021/3/21 11:38:08.
1>GenerateBindingRedirects:
1> Non ci sono redirect di binding suggeriti in ResolveAssemblyReferences.
1>GenerateTargetFrameworkMonikerAttribute:
1> salta il target "GenerateTargetFrameworkMonikerAttribute" perché tutti i file di output sono aggiornati rispetto ai file di input.
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 / deterministico+ /langversion:7.3 Program.cs Proprietà\AssemblyInfo.cs "obj\Debug\. NETFramework, Version=v4.6.AssemblyAttributes.cs"
1> Usare la compilazione condivisa per i compilatori dalla cartella della colonna posteriore: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
1>_CopyAppConfigFile:
1> Copiare file da "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config" a "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe.config"。
1>CopiaFileADirectoryOutput:
1> Copiare file da "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe" a "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> Copiare file da "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb" a "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.pdb"。
1>
1> è stato generato con successo.
1> 0 avvisi
1> 0 errori
1>
1> Tempo trascorso 00:00:00.66
========== Rigenera tutti: 1 ha successo, 0 fallisce e 0 ========== saltato

Scaricato da altri articoli su Internet, solo per riferimento:


Il MSBuild integrato di .NET Framework 4.0 non riconosce le caratteristiche della sintassi C# 6.0.

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

MSbuild è il sistema di build di Visual Studio. Chiama il compilatore C# per compilare il progetto C#. Roslyn è un compilatore C# (e compilatore VB). Perciò, msbuild usa Roslyn.

Tuttavia, Roslyn contiene più di un semplice compilatore. Include anche un plugin VS che ti offre funzionalità IDE (liste di completamento, colori, correzioni di codice, ecc.).

Inoltre, Roslyn è un'API per l'analisi del codice sorgente, che puoi utilizzare nelle tue applicazioni. Per quest'ultimo caso, esiste un'API chiamata MSBuildWorkspace che può essere utilizzata per aprire un progetto o una soluzione per l'analisi. Questo spazio di lavoro utilizza MSBuild per scoprire tutte le parti di un progetto e di una soluzione. Pertanto, questa parte di Roslin utilizza MSBuild.


Sommario:

Da quanto ho capito, MSBuild è una raccolta di compilatori Microsoft, e potrebbe non essere responsabile della generazione, ma ci aiuterà a chiamare Roslyn per compilare il codice C#. Può anche compilare codice in altri linguaggi e poi chiamare altri compilatori corrispondenti.

Per compilare progetti C#, MSBuild è il decisore e Roslyn l'esecutore.





Precedente:ASP.NET Core (VI) DI ottiene manualmente il metodo di iniezione degli oggetti
Prossimo:.NET/C# Emit genera dinamicamente gli assembly
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com