Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 2796|Svar: 2

[Kilde] .NET/C# Roslyn compilerplatform

[Kopier link]
Opslået på 10/03/2024 10.58.32 | | | |
Compiler: En compiler er et program, der konverterer kildekode (originalsprog) skrevet i ét programmeringssprog til et andet (målsprog). Kompilering er processen med at oversætte fra kildekode (normalt et højniveausprog) til objektkode (normalt et lavniveausprog eller maskinsprog), som kan udføres direkte af en computer eller virtuel maskine.

På .NET-platformen er der to forskellige compilere på forskellige stadier af modellens eksekvering: den ene kaldet Roslyn-compileren, som kompilerer C#- og VB-kode til assemblies; Den anden kaldes RyuJIT-kompilatoren, som kompilerer IL (mellemliggende sprog) koden i assembleren til maskinkode.

Denne artikel starter med Roslyn-kompilatoren. Vi behøver ikke at dykke ned i, hvordan det fungerer, men for at forstå, hvordan det fungerer, for at vide, hvad det kan bruges til.

Oprindeligt var compileren af C#-sproget skrevet i C++, og senere introducerede Microsoft en ny compiler skrevet i C#: Roslyn, som er en bootstrap-compiler.

Bootstrap-kompilatoren betyder, at kompilatoren af et bestemt programmeringssprog er skrevet i selve sproget. Hver version af bootstrap-kompilatoren kompileres med en version, der gik forud, men dens første version skal kompileres af en compiler skrevet i et andet sprog, såsom Roslyns første version, kompileret af en compiler skrevet i C++. Mange programmeringssprog modnes og skriver deres egne compilere ved hjælp af selve sproget, såsom C# og Go.

På .NET-platformen er Roslyn-kompilatoren ansvarlig for at kompilere C#- og VB-kode til assemblies.

De fleste eksisterende traditionelle compilere er "black box"-mønstre, der konverterer kildekode til eksekverbare filer eller biblioteksfiler, og vi har ingen måde at vide, hvad der sker imellem. I modsætning til Roslyn giver Roslyn dig adgang til alle trin i kodekompilationsprocessen via API'er.

Dens arbejdsmekanisme er pipeline-baseret med fire trin, hvor hver er et uafhængigt modul, og hver modul leverer et tilsvarende API. Integrerede udviklingsmiljøer (IDE'er) kan udnytte disse API'er til at tilbyde praktiske værktøjer til at forbedre udviklingseffektiviteten, såsom kodefremhævning, smarte hints, refaktoreringsværktøjer, performanceanalyseværktøjer og mere. Derudover kan udviklere med Roslyn bruge compileren som en service i deres egne programmer.

Udnyt de API'er, som Roslyn leverer, til dynamisk at generere kodeeksempler

Først skal du oprette et nyt ClassLibraryGenerator-bibliotek og oprette et .NET-standardbiblioteksprojekt, der retter sig mod netstandard2.0 target framework-navnet (TFM). Tilføj NuGet-pakkerne Microsoft.CodeAnalysis.Analyzers og Microsoft.CodeAnalysis.CSharp, csproj konfigureres som følger:


Opret en ny C#-fil kaldet TestSourceGenerator.cs, der specificerer din egen kildegenerator som følger:

Fra kontekstobjektet kan vi få adgang til det kompilerede indgangspunkt eller Main-metoden. En mainMethod-instans er en IMethodSymbol, der repræsenterer symbolet for en metode eller lignende metode (inklusive konstruktører, destruktorer, operatorer eller attribut-/begivenhedsaccessorer). Microsoft.CodeAnalysis.Compilation.GetEntryPoint-metoden returnerer IMethodSymbol for programmets indgangspunkt. Andre metoder giver dig mulighed for at finde ethvert metodesymbol i dit projekt. I dette objekt kan vi udlede navnerummet (hvis det eksisterer) og den type, det indeholder. Kilden i dette eksempel er en interpoleret streng, der skabeloner kildekoden, der skal genereres, med de interpolerede huller, der udfylder det indeholdte navnerum og typeinformation. Tilføj kilde til konteksten med promptens navn. I dette eksempel opretter byggeren en ny byggekildefil, der indeholder implementeringen af den delvise metode i konsolapplikationen. En kildegenerator kan skrives til at tilføje enhver favoritkilde.

Opret en ny ConsoleApp4-konsolapp (uden topniveau-sætninger) med følgende kode:

Samtidig tilføjes ClassLibraryGenerator-projektreferencen som følger:

Prøv at starte konsolappen med outputtet som følger:



I Visual Studio klikker du på projektet "Dependencies" - > "Analyzer" - > "ClassLibraryGenerator" - > "ClassLibraryGenerator.TestSourceGenerator", dobbeltklik på filen "Program.g.cs" for at se den genererede kode, som følger:



Lynhurtig:Ændring af builderens kode kan kræve en genstart af Visual Studio for at se den

Roslyn GitHub-adresse:Hyperlink-login er synlig.

Henvisning:

Hyperlink-login er synlig.
Hyperlink-login er synlig.
Hyperlink-login er synlig.




Tidligere:Kodeudførelse i Visual Studio ved brug af C# Interactive-vinduet
Næste:Windows 11 original ISO-billedfil download
 Udlejer| Opslået på 10/03/2024 10.59.12 |
Introduktion og forskel mellem JIT- og AOT-kompilering i .NET
https://www.itsvse.com/thread-10734-1-1.html
 Udlejer| Opslået på 06/07/2024 16.59.59 |
Brug Roslyn til dynamisk at kompilere C#-kode og køre den
https://www.itsvse.com/thread-10786-1-1.html
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com