Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 55049|Antwoord: 0

[Bron] Het verschil tussen de Roslyn MSBuild-compiler

[Link kopiëren]
Geplaatst op 21-03-2021 11:55:39 | | | |
MSBuild: De Microsoft Build Engine is een platform voor het bouwen van applicaties. Deze engine, ook bekend als MSBuild, levert een XML-schema voor projectbestanden dat bepaalt hoe het buildplatform software omgaat en bouwt. Visual Studio gebruikt MSBuild, maar MSBuild is niet afhankelijk van Visual Studio. Door msbuild.exe aan te roepen in een project- of oplossingsbestand, kun je producten plannen en bouwen in een omgeving zonder Visual Studio geïnstalleerd.

Voorstellen:De hyperlink-login is zichtbaar.

Barabala zei zoveel, zoals uit de naam te zien is, dat hij de compiler is van Microsoft, dat wil zeggen projecten programmeert tot uitvoerbare programma's, enzovoort.

Eerder gebruikt, pas de code aan met txt notepad, compileer opnieuw met msbuild, als volgt:

Tien jaar lang .NET-programma's debuggen met Notepad thuis op een computer
https://www.itsvse.com/thread-9419-1-1.html

Roslynis een open-source .NET-compiler van Microsoft Corporation. De compiler ondersteunt C#- en Visual Basic-codecompilatie en biedt rijke code-analyse-API's.
We proberen een nieuwe te creëren.NET framework 4.6project, met VS 2019, normaal de instelling MSBuild Project Generate Output Detail genereert, zoals te zien is in de onderstaande afbeelding:



Klik met de rechtermuisknop op het item om te proberen te regenereren, zoals hieronder weergegeven:



1>------ Alle rebuilds zijn gestart: Project: ConsoleApp1, Configuratie: Debuggen Elke CPU ------
1> De starttijd is 2021/3/21, 11:38:08.
1>GenerateBindingRedirects:
1> Er zijn geen voorgestelde bindende doorverwijzingen in ResolveAssemblyReferences.
1>GenerateTargetFrameworkMonikerAttribute:
1> slaat het doelwit "GenerateTargetFrameworkMonikerAttribute" over omdat alle uitvoerbestanden up-to-date zijn ten opzichte van de invoerbestanden.
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 Properties\AssemblyInfo.cs "obj\Debug\. NETFramework,Version=v4.6.AssemblyAttributes.cs"
1> Gebruik gedeelde compilatie voor compilers uit de map met de achterkolom: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
1>_CopyAppConfigFile:
1> Bestanden kopiëren van "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config" naar "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe.config"。
1>CopyFilesToOutputDirectory:
1> Bestanden kopiëren van "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe" naar "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> Bestanden kopiëren van "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb" naar "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.pdb"。
1>
1> is succesvol gegenereerd.
1> 0 waarschuwingen
1> 0 fouten
1>
1> Verstreken tijd 00:00:00.66
========== Regenereer allemaal: 1 slaagt, 0 faalt, en 0 ========== overgeslagen

Gedownload van andere artikelen op het internet, alleen ter referentie:


De ingebouwde MSBuild van .NET Framework 4.0 herkent de syntaxisfuncties van C# 6.0 niet.

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

MSbuild is het buildsysteem van Visual Studio. Het roept de C#-compiler aan om het C#-project te compileren. Roslyn is een C#-compiler (en VB-compiler). Daarom gebruikt msbuild Roslyn.

Roslyn bevat echter meer dan alleen een compiler. Het bevat ook een VS-plugin die IDE-functies geeft (voltooiingslijsten, kleuren, codefixes, enz.).

Daarnaast is Roslyn een API voor het analyseren van broncode, die je in je eigen applicaties kunt gebruiken. Voor het laatste geval is er een API genaamd MSBuildWorkspace die gebruikt kan worden om een project of oplossing te openen voor analyse. Deze werkruimte gebruikt MSBuild om alle onderdelen van een project en oplossing te achterhalen. Daarom gebruikt dit deel van Roslin MSBuild.


Samenvatting:

Voor zover ik weet is MSBuild een verzameling Microsoft-compilers, en hij is misschien niet verantwoordelijk voor het compileren van de generatie, maar hij zal ons wel helpen Roslyn te bellen om de c#-code te compileren. Hij kan ook code compileren in andere talen en vervolgens andere bijbehorende compilers aanroepen.

Voor het compileren van C#-projecten is MSBuild de beslisser en Roslyn de uitvoerder.





Vorig:ASP.NET Core (VI) DI verkrijgt handmatig de methode om objecten te injecteren
Volgend:.NET/C# Emitteert dynamisch assemblies
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com