See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 2796|Vastuse: 2

[Allikas] .NET/C# Roslyn kompilaatoriplatvorm

[Kopeeri link]
Postitatud 10.03.2024 10:58:32 | | | |
Kompilaator: Kompilaator on programm, mis teisendab ühes programmeerimiskeeles kirjutatud lähtekoodi (originaalkeel) teiseks (sihtkeeleks). Kompileerimine on protsess, mille käigus tõlkitakse lähtekoodist (tavaliselt kõrgetasemeline keel) objektkoodi (tavaliselt madalama taseme keel või masinkeel), mida saab otse arvuti või virtuaalmasina poolt käivitada.

.NET platvormil on kaks erinevat kompilaatorit, mis on mudeli täitmise erinevates etappides: üks nimega Roslyn kompilaator, mis kompileerib C# ja VB koodi assembleriteks; Teine on RyuJIT kompilaator, mis kompileerib assembleris oleva IL (vahekeele) koodi masinkoodiks.

See artikkel algab Roslyni kompilaatoriga. Me ei pea süvitsi minema, kuidas see töötab, vaid et mõista, kuidas see toimib, teadma, milleks seda kasutada saab.

Alguses kirjutati C# keele kompilaator C++ keeles ning hiljem tutvustas Microsoft uut kompilaatorit, mis oli kirjutatud C# keeles: Roslyn, mis on bootstrap-kompilaator.

Bootstrap-kompilaator tähendab, et teatud programmeerimiskeele kompilaator on kirjutatud just selles keeles. Iga bootstrap-kompilaatori versioon kompileeritakse eelneva versiooniga, kuid esimene versioon peab olema kompileeritud teises keeles kirjutatud kompilaatoriga, näiteks Roslyni esimene versioon, mis on kompileeritud C++ keeles kirjutatud kompilaatoriga. Paljud programmeerimiskeeled küpsevad ja kirjutavad oma kompilaatorid, kasutades keelt ennast, näiteks C# ja Go.

.NET platvormil vastutab Roslyni kompilaator C# ja VB koodi kompileerimise eest assembleriteks.

Enamik olemasolevaid traditsioonilisi kompilaatoreid on "musta kasti" mustrid, mis teisendavad lähtekoodi täidetavateks failideks või teegifailideks, ja meil puudub võimalus teada, mis vahepeal toimub. Erinevalt Roslynist võimaldab Roslyn sul ligi pääseda igale koodikompileerimise etapile API-de kaudu.

Selle töömehhanism põhineb torujuhtmel, koosneb neljast etapist, millest igaüks on iseseisev moodul ning iga moodul pakub vastavat API-d. Integreeritud arenduskeskkonnad (IDE-d) saavad neid API-sid kasutada, et pakkuda mugavaid tööriistu arenduse tõhususe parandamiseks, nagu koodi esiletõstmine, nutikad vihjed, refaktoreerimise tööriistad, jõudlusanalüüsi tööriistad ja palju muud. Lisaks saavad arendajad Roslyni abil kasutada kompilaatorit teenusena oma programmides.

Kasuta Roslyni poolt pakutavaid API-sid, et dünaamiliselt genereerida koodinäidiseid

Esiteks loo uus ClassLibraryGeneratori teek ja loo .NET standardteegi projekt, mis on suunatud netstandard2.0 sihtraamistiku nimetusele (TFM). Lisa NuGet paketid Microsoft.CodeAnalysis.Analyzers ja Microsoft.CodeAnalysis.CSharp, csproj on seadistatud järgmiselt:


Loo uus C# fail nimega TestSourceGenerator.cs, mis määrab oma lähtegeneraatori järgmiselt:

Kontekstiobjektist pääseme ligi kompileeritud sisestuspunktile või peamisele meetodile. mainMethod eksemplar on IMethodSymbol, mis esindab meetodi või sarnase meetodi sümbolit (sh konstruktorid, hävitajad, operaatorid või atribuudide/sündmuste lisajad). Microsoft.CodeAnalysis.Compilation.GetEntryPoint meetod tagastab programmi sisenemispunkti IMethodSymboli. Teised meetodid võimaldavad sul leida ükskõik millise meetodisümboli oma projektis. Selles objektis saame tuletada nimeruumi (kui see eksisteerib) ja selle tüübi. Selle näite allikaks on interpoleeritud string, mis mallindab genereeritava lähtekoodi, kus interpoleeritud lüngad täidavad sisaldatud nimeruumi ja tüübiinfot. Lisa allikas konteksti koos prompti nimega. Selle näite jaoks loob ehitaja uue ehituslähtefaili, mis sisaldab osalise meetodi rakenduse rakenduse rakendust. Lähtegeneraatori saab kirjutada mistahes lemmikallika lisamiseks.

Loo uus ConsoleApp4 konsoolirakendus (ilma tipptaseme avaldusteta) järgmise koodiga:

Samal ajal lisa ClassLibraryGenerator projekti viide järgmiselt:

Proovi käivitada konsoolirakendus väljundiga järgmiselt:



Visual Studios klõpsa projektil "Dependencies" - > "Analyzer" - > "ClassLibraryGenerator" - > "ClassLibraryGenerator.TestSourceGenerator", topeltklõpsa "Program.g.cs" failil, et näha genereeritud koodi, järgmiselt:



Kiire:Ehitaja koodi muutmine võib nõuda Visual Studio taaskäivitamist, et seda näha

Roslyn GitHubi aadress:Hüperlingi sisselogimine on nähtav.

Viide:

Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.




Eelmine:Koodi täitmine Visual Studios, kasutades C# interaktiivset akent
Järgmine:Windows 11 originaalse ISO pildifaili allalaadimine
 Üürileandja| Postitatud 10.03.2024 10:59:12 |
Sissejuhatus ja erinevus JIT-i ja AOT kompileerimise vahel .NET-is
https://www.itsvse.com/thread-10734-1-1.html
 Üürileandja| Postitatud 06.07.2024 16:59:59 |
Kasuta Roslyni, et dünaamiliselt kompileerida C# koodi ja käivitada
https://www.itsvse.com/thread-10786-1-1.html
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com