Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 2796|Svare: 2

[Kilde] .NET/C# Roslyn-kompilatorplattform

[Kopier lenke]
Publisert på 10.03.2024 10:58:32 | | | |
Kompilator: En kompilator er et program som konverterer kildekode (originalspråk) skrevet i ett programmeringsspråk til et annet (målspråk). Kompilering er prosessen med å oversette fra kildekode (vanligvis et høynivåspråk) til objektkode (vanligvis et lavnivåspråk eller maskinspråk) som kan utføres direkte av en datamaskin eller virtuell maskin.

På .NET-plattformen finnes det to forskjellige kompilatorer på ulike stadier av modellen: en kalt Roslyn-kompilatoren, som kompilerer C#- og VB-kode til assemblies; Den andre kalles RyuJIT-kompilatoren, som kompilerer IL-koden (mellomliggende språk) i assembleren til maskinkode.

Denne artikkelen starter med Roslyn-kompilatoren. Vi trenger ikke å gå i dybden på hvordan det fungerer, men å forstå hvordan det fungerer, for å vite hva det kan brukes til.

Opprinnelig ble kompilatoren til C#-språket skrevet i C++, og senere introduserte Microsoft en ny kompilator skrevet i C# selv: Roslyn, som er en bootstrap-kompilator.

Bootstrap-kompilatoren betyr at kompilatoren til et bestemt programmeringsspråk er skrevet i selve språket. Hver versjon av bootstrap-kompilatoren kompileres med en versjon som kom før, men den første versjonen må kompileres av en kompilator skrevet i et annet språk, slik som Roslyns første versjon kompilert av en kompilator skrevet i C++. Mange programmeringsspråk modnes og skriver sine egne kompilatorer ved å bruke språket selv, som C# og Go.

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

De fleste eksisterende tradisjonelle kompilatorer er "black box"-mønstre som konverterer kildekode til kjørbare filer eller bibliotekfiler, og vi har ingen måte å vite hva som skjer imellom. I motsetning til Roslyn lar Roslyn deg få tilgang til hvert trinn i kodekompilasjonsprosessen via API-er.

Dens arbeidsmekanisme er pipeline-basert, med fire trinn, hvor hvert trinn er en uavhengig modul, og hver modul gir et tilsvarende API. Integrerte utviklingsmiljøer (IDE-er) kan utnytte disse API-ene for å tilby praktiske verktøy som forbedrer utviklingseffektiviteten, som kodemarkering, smarte hint, refaktoreringsverktøy, ytelsesanalyseverktøy og mer. I tillegg kan utviklere med Roslyn bruke kompilatoren som en tjeneste i sine egne programmer.

Utnytt API-ene som Roslyn tilbyr for å generere kodeeksempler dynamisk

Først, opprett et nytt ClassLibraryGenerator-bibliotek og lag et .NET-standardbibliotekprosjekt som retter seg mot netstandard2.0-målrammeverket (TFM). Legg til NuGet-pakkene Microsoft.CodeAnalysis.Analyzers og Microsoft.CodeAnalysis.CSharp, csproj er konfigurert som følger:


Lag en ny C#-fil kalt TestSourceGenerator.cs som spesifiserer din egen kildegenerator som følger:

Fra kontekstobjektet kan vi få tilgang til det kompilerte inngangspunktet eller hovedmetoden. En mainMethod-instans er et IMethodSymbol som representerer symbolet til en metode eller lignende metode (inkludert konstruktører, destruktorer, operatorer eller attributt-/hendelsesaccessorer). Microsoft.CodeAnalysis.Compilation.GetEntryPoint-metoden returnerer IMethodSymbol til programmets inngangspunkt. Andre metoder lar deg finne hvilket som helst metodesymbol i prosjektet ditt. I dette objektet kan vi utlede navnerommet (hvis det eksisterer) og typen det inneholder. Kilden i dette eksempelet er en interpolert streng som maler kildekoden som skal genereres, med de interpolerte hullene som fyller det inneholdte navnerommet og typeinformasjonen. Legg kilde til kontekst med prompt-navnet. For dette eksempelet oppretter byggeren en ny byggekildefil som inneholder implementeringen av den delvise metoden i konsollapplikasjonen. En kildegenerator kan skrives for å legge til hvilken som helst favorittkilde.

Lag en ny ConsoleApp4-konsollapp (uten toppnivåsetninger) med følgende kode:

Samtidig legg til ClassLibraryGenerator-prosjektreferansen, som følger:

Prøv å starte konsollappen med utgangen som følger:



I Visual Studio, klikk på prosjektet "Dependencies" - > "Analyzer" - > "ClassLibraryGenerator" - > "ClassLibraryGenerator.TestSourceGenerator", dobbeltklikk på "Program.g.cs"-filen for å se den genererte koden, som følger:



Omgående:Å endre byggerkoden kan kreve en omstart av Visual Studio for å se den

Roslyn GitHub-adresse:Innloggingen med hyperkoblingen er synlig.

Referanse:

Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.




Foregående:Kodekjøring i Visual Studio ved bruk av C# Interactive-vinduet
Neste:Windows 11 original ISO-bildefil nedlasting
 Vert| Publisert på 10.03.2024 10:59:12 |
Introduksjon og forskjell mellom JIT- og AOT-kompilering i .NET
https://www.itsvse.com/thread-10734-1-1.html
 Vert| Publisert på 06.07.2024 16:59:59 |
Bruk Roslyn til å kompilere C#-kode dynamisk og kjør den
https://www.itsvse.com/thread-10786-1-1.html
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com