Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 55049|Svar: 0

[Källa] Skillnaden mellan Roslyn MSBuild-kompilatorn

[Kopiera länk]
Publicerad på 2021-03-21 11:55:39 | | | |
MSBuild: Microsoft Build Engine är en plattform för att bygga applikationer. Denna motor, även känd som MSBuild, tillhandahåller ett XML-schema för projektfiler som styr hur byggplattformen hanterar och bygger mjukvara. Visual Studio använder MSBuild, men MSBuild är inte beroende av Visual Studio. Genom att anropa msbuild.exe i ett projekt- eller lösningsprogram kan du schemalägga och bygga produkter i en miljö utan Visual Studio installerat.

Introducera:Inloggningen med hyperlänken är synlig.

Barabala sa så mycket, vilket kan ses av namnet, att han är Microsofts kompilator, det vill säga programmera projekt till körbara program, etc.

Används tidigare, modifiera koden med txt notepad, kompilera om med msbuild, enligt följande:

Felsöker .NET-program med Notepad hemma på en dator i tio år
https://www.itsvse.com/thread-9419-1-1.html

Roslynär en öppen källkodskompilator för .NET-teknik från Microsoft Corporation. Kompilatorn stödjer C#- och Visual Basic-kodkompilering och tillhandahåller rika kodanalys-API:er.
Vi försöker skapa en ny.NET-ramverket 4.6projektet, med VS 2019, kommer att generera MSBuild-projektets inställning Generate Output Detail som vanligt, som visas på bilden nedan:



Högerklicka på objektet för att försöka regenerera, som visas nedan:



1>------ Alla ombyggnader har initierats: Projekt: ConsoleApp1, Konfiguration: Felsökning av alla CPU-------
1> Starttiden är 2021/3/21 11:38:08.
1>GenerateBindingOmdirigeringar:
1> Det finns inga föreslagna bindande omdirigeringar i ResolveAssemblyReferences.
1>GenerateTargetFrameworkMonikerAttribute:
1> hoppar över målet "GenerateTargetFrameworkMonikerAttribute" eftersom alla utdatafiler är uppdaterade i förhållande till indatafilerna.
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 / deterministiskt+ /langversion:7.3 Program.cs Properties\AssemblyInfo.cs "obj\Debug\. NETFramework,Version=v4.6.AssemblyAttributes.cs"
1> Använd delad kompilering för kompilatorer från katalogen bakre kolumnen: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
1>_CopyAppConfigFile:
1> Kopierar filer från "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config" till "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe.config"。
1>CopyFilesToOutputDirectory:
1> Kopierar filer från "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe" till "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> Kopierar filer från "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb" till "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.pdb"。
1>
1> har framgångsrikt genererats.
1> 0 varningar
1> 0 fel
1>
1> Förfluten tid 00:00:00.66
========== Regenerera alla: 1 lyckas, 0 misslyckas och 0 ========== hoppade över

Nedladdat från andra artiklar på internet, endast för referens:


.NET Framework 4.0:s inbyggda MSBuild känner inte igen C# 6.0-syntaxfunktioner.

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

MSbuild är Visual Studios byggsystem. Den anropar C#-kompilatorn för att kompilera C#-projektet. Roslyn är en C#-kompilator (och VB-kompilator). Därför använder msbuild Roslyn.

Men Roslyn innehåller mer än bara en kompilator. Den inkluderar också ett VS-plugin som ger dig IDE-funktioner (fullbordan-listor, färger, kodfixar, etc.).

Dessutom är Roslyn ett API för att analysera källkod, som du kan använda i dina egna applikationer. För det sista fallet finns det ett API som heter MSBuildWorkspace som kan användas för att öppna ett projekt eller en lösning för analys. Detta arbetsområde använder MSBuild för att ta reda på alla delar av ett projekt och en lösning. Därför använder denna del av Roslin MSBuild.


Sammanfattning:

Min egen uppfattning är att MSBuild är en samling Microsoft-kompilatorer, och han kanske inte ansvarar för att kompilera generationen, men han kommer att hjälpa oss att ringa Roslyn för att kompilera c#-koden. Han kan också kompilera kod i andra språk och sedan anropa andra motsvarande kompilatorer.

Vid kompilering av C#-projekt är MSBuild beslutsfattare och Roslyn exekutör.





Föregående:ASP.NET Core (VI) DI hämtar manuellt metoden för att injicera objekt
Nästa:.NET/C# Emittera dynamiskt genererar assemblies
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com