Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 2796|Odpověď: 2

[Zdroj] .NET/C# Roslyn kompilátorová platforma

[Kopírovat odkaz]
Zveřejněno 10.03.2024 10:58:32 | | | |
Kompilátor: Kompilátor je program, který převádí zdrojový kód (původní jazyk) napsaný v jednom programovacím jazyce do jiného (cílového jazyka). Kompilace je proces překladu ze zdrojového kódu (obvykle vysokoúrovňového jazyka) do objektového kódu (obvykle nízkoúrovňového jazyka nebo strojového jazyka), který může být vykonán přímo počítačem nebo virtuálním strojem.

V platformě .NET existují dva různé kompilátory v různých fázích spouštění modelu: jeden se nazývá Roslyn kompilátor, který kompiluje kód C# a VB do assemblerů; Druhý se nazývá RyuJIT kompilátor, který kompiluje kód IL (mezijazyk) v assembleru do strojového kódu.

Tento článek začíná překladatelem Roslyn. Nemusíme se pouštět do toho, jak funguje, ale abychom pochopili, jak funguje, abychom věděli, k čemu se dá použít.

Zpočátku byl překladač jazyka C# napsán v C++, později Microsoft představil nový kompilátor napsaný přímo v C#: Roslyn, což je bootstrapový kompilátor.

Bootstrapový kompilátor znamená, že kompilátor určitého programovacího jazyka je napsán přímo v tomto jazyce. Každá verze bootstrapového kompilátoru je kompilována s verzí, která jí předcházela, ale její první verze musí být zkompilována kompilátorem napsaným v jiném jazyce, například první verzí Roslyn kompilovanou kompilátorem napsaným v C++. Mnoho programovacích jazyků dozrává a píše vlastní kompilátory přímo v tomto jazyce, například C# a Go.

Na platformě .NET je kompilátor Roslyn zodpovědný za kompilaci kódu C# a VB do assemblerů.

Většina existujících tradičních kompilátorů jsou "černé skříňky" vzory, které převádějí zdrojový kód na spustitelné soubory nebo knihovnické soubory, a nemáme žádný způsob, jak zjistit, co se mezi tím děje. Na rozdíl od Roslyn vám Roslyn umožňuje přístup ke všem fázím procesu kompilace kódu prostřednictvím API.

Jeho funkční mechanismus je založen na pipeline, se čtyřmi fázemi, z nichž každá je samostatný modul, a každý modul poskytuje odpovídající API. Integrovaná vývojová prostředí (IDE) mohou tato API využívat k poskytování pohodlných nástrojů ke zvýšení efektivity vývoje, jako je zvýrazňování kódu, chytré nápovědy, nástroje pro refaktoring, nástroje pro analýzu výkonu a další. Navíc u Roslyn mohou vývojáři používat kompilátor jako službu ve svých vlastních programech.

Využijte API poskytovaná Roslyn k dynamickému generování vzorků kódu

Nejprve vytvořte novou knihovnu ClassLibraryGenerator a vytvořte projekt pro .NET standard, který cílí na cílový rámec netstandard2.0 (TFM). Přidejte balíčky NuGet Microsoft.CodeAnalysis.Analyzers a Microsoft.CodeAnalysis.CSharp a csproj je nakonfigurován následovně:


Vytvořte nový soubor v C# nazvaný TestSourceGenerator.cs, který specifikuje váš vlastní generátor zdrojů následovně:

Z kontextového objektu můžeme přistupovat ke zkompilovanému vstupnímu bodu nebo k hlavní metodě. Instance mainMethod je IMethodSymbol, který reprezentuje symbol metody nebo podobné metody (včetně konstruktorů, destrokerů, operátorů nebo atributů/událostí). Metoda Microsoft.CodeAnalysis.Compilation.GetEntryPoint vrací IMethodSymbol vstupního bodu programu. Jiné metody vám umožní najít jakýkoli symbol metody ve vašem projektu. V tomto objektu můžeme odvodit jmenný prostor (pokud existuje) a typ, který obsahuje. Zdroj v tomto příkladu je interpolovaný řetězec, který šablonuje zdrojový kód určený k generování, přičemž interpolované mezery vyplňují obsahovaný jmenný prostor a informace o typu. Přidejte zdroj do kontextu s názvem promptu. Pro tento příklad tvůrce vytváří nový build source soubor, který obsahuje implementaci částečné metody v konzolové aplikaci. Generátor zdrojů lze napsat, který přidá libovolný oblíbený zdroj.

Vytvořte novou konzolovou aplikaci ConsoleApp4 (bez příkazů na nejvyšší úrovni) s následujícím kódem:

Současně přidejte odkaz na projekt ClassLibraryGenerator, a to následovně:

Zkuste spustit konzolovou aplikaci s výstupem takto:



Ve Visual Studiu klikněte na projekt "Dependencies" – > "Analyzer" – > "ClassLibraryGenerator" > "ClassLibraryGenerator.TestSourceGenerator", dvakrát klikněte na soubor "Program.g.cs" a zobrazí se vygenerovaný kód, a to následovně:



Pobídnout:Úprava kódu tvůrce může vyžadovat restart Visual Studia, abyste ho viděli

Adresa Roslyn na GitHubu:Přihlášení k hypertextovému odkazu je viditelné.

Odkaz:

Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.




Předchozí:Provádění kódu ve Visual Studiu pomocí interaktivního okna C#
Další:Stažení původního ISO obrazu Windows 11
 Pronajímatel| Zveřejněno 10.03.2024 10:59:12 |
Úvod a rozdíl mezi kompilací JIT a AOT v .NET
https://www.itsvse.com/thread-10734-1-1.html
 Pronajímatel| Zveřejněno 06.07.2024 16:59:59 |
Použijte Roslyn k dynamické kompilaci kódu v C# a spuštění
https://www.itsvse.com/thread-10786-1-1.html
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com