Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 2796|Odgovoriti: 2

[Vir] .NET/C# Roslyn prevajalniška platforma

[Kopiraj povezavo]
Objavljeno na 10. 03. 2024 10:58:32 | | | |
Prevajalnik: Prevajalnik je program, ki pretvarja izvorno kodo (izvirni jezik), napisano v enem programskem jeziku, v drugega (ciljni jezik). Prevajanje je postopek prevajanja iz izvorne kode (običajno visokonivojski jezik) v objektno kodo (običajno nizkonivojski jezik ali strojni jezik), ki ga lahko neposredno izvede računalnik ali virtualni stroj.

V .NET platformi obstajata dva različna prevajalnika v različnih fazah izvajanja modela: eden se imenuje Roslyn prevajalnik, ki prevaja C# in VB kodo v asembence; Drugi se imenuje prevajalnik RyuJIT, ki prevaja IL (vmesni jezik) kodo v asemblerju v strojno kodo.

Ta članek se začne s prevajalnikom Roslyn. Ni nam treba raziskovati, kako deluje, ampak razumeti, kako deluje, vedeti, za kaj se lahko uporabi.

Sprva je bil prevajalnik jezika C# napisan v C++, kasneje pa je Microsoft predstavil nov prevajalnik, napisan prav v C#: Roslyn, ki je bootstrap prevajalnik.

Zagonski prevajalnik pomeni, da je prevajalnik določenega programskega jezika napisan v samem jeziku. Vsaka različica bootstrap prevajalnika je prevedena z različico, ki ji je predhodila, vendar mora prvo različico prevesti prevajalnik, napisan v drugem jeziku, kot je prva različica Roslyna, prevedena s prevajalnikom, napisanim v C++. Veliko programskih jezikov dozori in napiše lastne prevajalnike z uporabo samega jezika, kot sta C# in Go.

Na .NET platformi je prevajalnik Roslyn odgovoren za prevajanje C# in VB kode v asemblerje.

Večina obstoječih tradicionalnih prevajalnikov so vzorci "črne skrinjice", ki izvorno kodo pretvorijo v izvršljive datoteke ali knjižnične datoteke, in nimamo načina, da bi vedeli, kaj se zgodi vmes. Za razliko od Roslyna vam Roslyn omogoča dostop do vseh faz procesa prevajanja kode prek API-jev.

Njegov delovni mehanizem temelji na cevovodih, s štirimi stopnjami, od katerih je vsaka neodvisen modul, vsak modul pa zagotavlja ustrezni API. Integrirana razvojna okolja (IDE) lahko izkoristijo te API-je za zagotavljanje priročnih orodij za izboljšanje učinkovitosti razvoja, kot so označevanje kode, pametni namigi, orodja za refaktoriranje, orodja za analizo zmogljivosti in še več. Poleg tega lahko razvijalci pri Roslynu uporabljajo prevajalnik kot storitev v svojih programih.

Izkoristite API-je, ki jih zagotavlja Roslyn, za dinamično generiranje vzorcev kode

Najprej ustvarite novo knjižnico ClassLibraryGenerator in ustvarite projekt .NET standardne knjižnice, ki cilja na netstandard2.0 target framework (TFM). Če dodamo pakete NuGet Microsoft.CodeAnalysis.Analyzers in Microsoft.CodeAnalysis.CSharp, je csproj konfiguriran takole:


Ustvarite novo C# datoteko z imenom TestSourceGenerator.cs, ki določa vaš lasten generator izvorne kode na naslednji način:

Iz kontekstnega objekta lahko dostopamo do prevedene vhodne točke ali glavne metode. Instanca mainMethod je IMethodSymbol, ki predstavlja simbol metode ali podobne metode (vključno s konstruktorji, destruktorji, operatorji ali atributi/dogodki accessorji). Metoda Microsoft.CodeAnalysis.Compilation.GetEntryPoint vrne IMethodSimbol vhodne točke programa. Druge metode vam omogočajo, da najdete katerikoli simbol metode v vašem projektu. V tem objektu lahko sklepamo imenski prostor (če obstaja) in tip, ki ga vsebuje. Izvorna koda v tem primeru je interpoliran niz, ki predlaže izvorno kodo, ki jo želimo generirati, pri čemer interpolirane vrzeli zapolnjujejo vsebovani imenski prostor in informacije o tipu. Dodaj vir v kontekst z imenom poziva. V tem primeru graditelj ustvari novo datoteko izvorne kode gradnje, ki vsebuje implementacijo delne metode v konzolni aplikaciji. Generator izvorne kode je mogoče napisati, da doda katerikoli priljubljeni vir.

Ustvarite novo konzolno aplikacijo ConsoleApp4 (brez najvišjih stavkov) z naslednjo kodo:

Hkrati dodajte referenco projekta ClassLibraryGenerator, kot sledi:

Poskusi zagnati konzolno aplikacijo z izhodom takole:



V Visual Studiu kliknite na projekt "Dependencies" - > "Analyzer" - > "ClassLibraryGenerator" - > "ClassLibraryGenerator.TestSourceGenerator", dvakrat kliknite na datoteko "Program.g.cs" za ogled generirane kode, kot sledi:



Uren:Spreminjanje graditeljske kode lahko zahteva ponovni zagon Visual Studia, da jo vidiš

GitHub naslov Roslyn:Prijava do hiperpovezave je vidna.

Referenčni:

Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.




Prejšnji:Izvajanje kode v Visual Studiu z uporabo interaktivnega okna C#
Naslednji:Prenos izvirne ISO slike za Windows 11
 Najemodajalec| Objavljeno na 10. 03. 2024 10:59:12 |
Uvod in razlika med JIT in AOT prevajanjem v .NET
https://www.itsvse.com/thread-10734-1-1.html
 Najemodajalec| Objavljeno na 6. 07. 2024 16:59:59 |
Uporabite Roslyn za dinamično prevajanje C# kode in njeno zagon
https://www.itsvse.com/thread-10786-1-1.html
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com