Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 2796|Válasz: 2

[Forrás] .NET/C# Roslyn compiler platform

[Linket másol]
Közzétéve 2024. 03. 10. 10:58:32 | | | |
Fordító: A fordító egy olyan program, amely egy programozási nyelven írt forráskódot (eredeti nyelv) egy másikra (célnyelvre) alakítja át. A fordítás a forráskódból (általában magas szintű nyelvből) objektumkódba (általában alacsony szintű nyelvre vagy gépi nyelvre) fordítási folyamat, amelyet közvetlenül futtathat számítógép vagy virtuális gép.

A .NET platformon két különböző fordító van, amelyek különböző fázisokban dolgoznak a modell végrehajtásának: az egyik, amit Roslyn fordítónak hívnak, amely C# és VB kódot assemblerekre fordít; A másik a RyuJIT fordító, amely az IL (köztes nyelv) kódját gépi kódba fordítja az assembly között.

Ez a cikk a Roslyn fordítóval kezdődik. Nem kell belemerülnünk abba, hogyan működik, hanem hogy megértsük, hogyan működik, és tudni, mire lehet használni.

Kezdetben a C# nyelv fordítója C++-ban íródott, majd később a Microsoft bevezetett egy új fordítót, amely magával a C#-val íródott: a Roslyn, amely egy bootstrap fordító.

A bootstrap fordító azt jelenti, hogy egy adott programozási nyelv fordítója magában a nyelven van írva. A bootstrap fordító minden verziója egy előtte lévő verzióval van fordítva, de az első verziót egy másik nyelven írt fordítóval kell fordítani, például Roslyn első verzióját egy C++ nyelven írt fordítóval. Sok programozási nyelv érett, és saját fordítót ír magával a nyelv felhasználásával, például C# és Go.

A .NET platformon a Roslyn fordító felelős a C# és VB kód összeállításokba fordításáért.

A legtöbb hagyományos fordító "fekete doboz" mintázat, amely a forráskódot futtatható fájlokká vagy könyvtári fájlokká alakítja, és nincs módunk tudni, mi történik közöttük. A Roslynnal ellentétben a Roslyn lehetővé teszi, hogy API-kon keresztül hozzáférj a kódfordítási folyamat minden szakaszához.

Működési mechanizmusa csővezeték-alapú, négy szakaszból áll, mindegyik független modul, és minden modul megfelelő API-t biztosít. Az integrált fejlesztői környezetek (IDE-k) ezeket az API-kat kihasználhatják, hogy kényelmes eszközöket nyújtsanak a fejlesztés hatékonyságának javítására, mint például kódkiemelés, okos tippek, refaktoráló eszközök, teljesítményelemző eszközök és még sok más. Ezen felül a Roslyn segítségével a fejlesztők a fordítót saját programjaikban is szolgáltatásként használhatják.

Használja ki a Roslyn által biztosított API-kat dinamikusan generálni a kódmintákat

Először hozz létre egy új ClassLibraryGenerator könyvtárat, és készíts egy .NET szabványos könyvtári projektet, amely a netstandard2.0 célkeret (TFM) nevet célozza meg. Add hozzá a NuGet Microsoft.CodeAnalysis.Analyzers és Microsoft.CodeAnalysis.CSharp csomagokat, így a csproj a következőképpen van konfigurálva:


Hozz létre egy új C# fájlt TestSourceGenerator.cs néven, amely a saját forrásgenerátort az alábbiak szerint határozza meg:

A kontextus objektumból hozzáférhetünk a lefordított belépőponthoz vagy a Fő metódushoz. A mainMethod példány egy IMethodSymbol, amely egy metódus vagy hasonló metódus szimbólumát jelöli (beleértve a konstruktorokat, rombolókat, operátorokat vagy attribútum/esemény hozzáférést). A Microsoft.CodeAnalysis.Compilation.GetEntryPoint metódus a program belépési pontjának IMethodSymbolját adja vissza. Más módszerek lehetővé teszik, hogy bármilyen módszerszimbólumot megtalálj a projektedben. Ebben az objektumban levezethetjük a névteret (ha létezik) és az általa található típust. A példa forrása egy interpolált string, amely sablonozza a generálandó forráskódot, az interpolált résekből pedig a megadott névtér és típus információ található. Add hozzá forrást a kontextushoz a prompt névvel. Ebben a példában a fejlesztő létrehoz egy új build forrásfájlt, amely tartalmazza a részleges metódus implementációját a konzol alkalmazásban. Egy forrásgenerátor írható, hogy bármilyen kedvenc forrást hozzáadjon.

Hozz létre egy új ConsoleApp4 konzolalkalmazást (felső szintű utasítások nélkül) a következő kóddal:

Ugyanakkor adjuk hozzá a ClassLibraryGenerator projekthivatkozást az alábbiak szerint:

Próbáld meg elindítani a konzolos alkalmazást a következő kimenettel:



A Visual Studio-ban kattintson a "Dependencies" - > "Analyzer" - > "ClassLibraryGenerator" - > "ClassLibraryGenerator.TestSourceGenerator" projektre, és kattintson a "Program.g.cs" fájlra, hogy lássa a generált kódot, az alábbiak szerint:



Haladéktalan:A fejlesztő kódjának módosításához a Visual Studio újraindítása szükséges lehet ahhoz, hogy lássuk

Roslyn GitHub cím:A hiperlink bejelentkezés látható.

Utalás:

A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.




Előző:A kód végrehajtása Visual Studio-ban a C# Interaktív ablak használatával
Következő:Windows 11 eredeti ISO képfájl letöltése
 Háziúr| Közzétéve 2024. 03. 10. 10:59:12 |
Bevezetés és különbség a JIT és az AOT fordítás között .NET formátumban
https://www.itsvse.com/thread-10734-1-1.html
 Háziúr| Közzétéve 2024. 07. 06. 16:59:59 |
Használd a Roslyn-t a C# kód dinamikus fordításához és futtatásához
https://www.itsvse.com/thread-10786-1-1.html
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com