Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 2796|Atbildi: 2

[Avots] .NET/C# Roslyn kompilatora platforma

[Kopēt saiti]
Publicēts 10.03.2024 10:58:32 | | | |
Kompilators: kompilators ir programma, kas pārvērš vienā programmēšanas valodā rakstīto avota kodu (oriģinālvalodu) citā (mērķa valodā). Kompilācija ir tulkošanas process no avota koda (parasti augsta līmeņa valodas) uz objekta kodu (parasti zema līmeņa valodu vai mašīnvalodu), ko var izpildīt tieši ar datoru vai virtuālo mašīnu.

.NET platformā ir divi dažādi kompilatori dažādos modeļa izpildes posmos: viens, ko sauc par Roslyn kompilatoru, kas apkopo C# un VB kodu komplektos; Otru sauc par RyuJIT kompilatoru, kas apkopo IL (starpvalodas) kodu montāžā mašīnas kodā.

Šis raksts sākas ar Roslyn kompilatoru. Mums nav jāiedziļinās, kā tas darbojas, bet lai saprastu, kā tas darbojas, lai zinātu, kam to var izmantot.

Sākotnēji C# valodas kompilators tika rakstīts C++, un vēlāk Microsoft ieviesa jaunu kompilatoru, kas rakstīts pašā C#: Roslyn, kas ir bootstrap kompilators.

Bootstrap kompilators nozīmē, ka noteiktas programmēšanas valodas kompilators ir rakstīts pašā valodā. Katra bootstrap kompilatora versija tiek kompilēta ar versiju, kas bija pirms tās, bet tās pirmā versija ir jākompilē kompilatoram, kas rakstīts citā valodā, piemēram, Roslyn pirmā versija, ko kompilējis kompilators, kas rakstīts C++. Daudzas programmēšanas valodas nobriest un raksta savus kompilatorus, izmantojot pašu valodu, piemēram, C# un Go.

.NET platformā Roslyn kompilators ir atbildīgs par C# un VB koda kompilēšanu komplektos.

Lielākā daļa esošo tradicionālo kompilatoru ir "melnās kastes" modeļi, kas pārvērš avota kodu izpildāmos failos vai bibliotēkas failos, un mums nav iespējas zināt, kas notiek pa vidu. Atšķirībā no Roslyn, Roslyn ļauj piekļūt katram koda kompilēšanas procesa posmam, izmantojot API.

Tās darba mehānisms ir balstīts uz cauruļvadu, ar četriem posmiem, no kuriem katrs ir neatkarīgs modulis, un katrs modulis nodrošina atbilstošu API. Integrētās izstrādes vides (IDE) var izmantot šīs API, lai nodrošinātu ērtus rīkus izstrādes efektivitātes uzlabošanai, piemēram, koda izcelšanu, viedos padomus, pārveidošanas rīkus, veiktspējas analīzes rīkus un daudz ko citu. Turklāt, izmantojot Roslyn, izstrādātāji var izmantot kompilatoru kā pakalpojumu savās programmās.

Izmantojiet Roslyn nodrošinātās API, lai dinamiski ģenerētu koda paraugus

Vispirms izveidojiet jaunu ClassLibraryGenerator bibliotēku un .NET standarta bibliotēkas projektu, kas paredzēts netstandard2.0 mērķa struktūras monikeram (TFM). Pievienojiet NuGet pakotnes Microsoft.CodeAnalysis.Analyzers un Microsoft.CodeAnalysis.CSharp, csproj ir konfigurēts šādi:


Izveidojiet jaunu C# failu ar nosaukumu TestSourceGenerator.cs, kas norāda savu avota ģeneratoru šādi:

No konteksta objekta mēs varam piekļūt kompilētajam ieejas punktam vai galvenajai metodei. MainMethod instance ir IMethodSymbol, kas apzīmē metodes vai līdzīgas metodes simbolu (ieskaitot konstruktorus, destruktorus, operatorus vai atribūtu/notikumu piekļūstošos). Metode Microsoft.CodeAnalysis.Compilation.GetEntryPoint atgriež programmas ieejas punkta IMethodSymbol. Citas metodes ļauj projektā atrast jebkuru metodes simbolu. Šajā objektā mēs varam secināt nosaukumu telpu (ja tāda ir) un tajā esošo tipu. Šajā piemērā avots ir interpolēta virkne, kas veido ģenerējamo avota kodu, un interpolētās nepilnības aizpilda saturošo nosaukumvietu un tipa informāciju. Pievienojiet avotu kontekstam ar uzvednes nosaukumu. Šajā piemērā veidotājs izveido jaunu būvēšanas avota failu, kas satur daļējas metodes ieviešanu konsoles lietojumprogrammā. Avota ģeneratoru var uzrakstīt, lai pievienotu jebkuru iecienītāko avotu.

Izveidojiet jaunu ConsoleApp4 konsoles lietotni (bez augstākā līmeņa paziņojumiem) ar šādu kodu:

Tajā pašā laikā pievienojiet ClassLibraryGenerator projekta atsauci šādi:

Mēģiniet palaist konsoles lietotni ar izvadi šādi:



Visual Studio noklikšķiniet uz projekta "Atkarības" - > "Analizators" - > "ClassLibraryGenerator" - > "ClassLibraryGenerator.TestSourceGenerator", veiciet dubultklikšķi uz faila "Program.g.cs", lai redzētu ģenerēto kodu šādi:



Uzvedne:Lai modificētu veidotāja kodu, var būt nepieciešams restartēt Visual Studio, lai to redzētu

Roslyn GitHub adrese:Hipersaites pieteikšanās ir redzama.

Atsauce:

Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.




Iepriekšējo:Koda izpilde Visual Studio, izmantojot C# interaktīvo logu
Nākamo:Windows 11 oriģinālā ISO attēla faila lejupielāde
 Saimnieks| Publicēts 10.03.2024 10:59:12 |
Ievads un atšķirība starp JIT un AOT kompilāciju .NET
https://www.itsvse.com/thread-10734-1-1.html
 Saimnieks| Publicēts 06.07.2024 16:59:59 |
Roslyn izmantošana, lai dinamiski kompilētu C# kodu un palaistu to
https://www.itsvse.com/thread-10786-1-1.html
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com