Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 2796|Yanıt: 2

[Kaynak] .NET/C# Roslyn derleyici platformu

[Bağlantıyı kopyala]
Yayınlandı 10.03.2024 10:58:32 | | | |
Derleyici: Derleyici, bir programlama dilinde yazılmış kaynak kodunu (orijinal dil) başka bir programlama diline (hedef dile) dönüştüren bir programdır. Derleme, kaynak koddan (genellikle yüksek seviyeli bir dil) nesne koduna (genellikle düşük seviyeli bir dil veya makine dili) çevirme sürecidir ve bu kod doğrudan bir bilgisayar veya sanal makine tarafından yürütülebilir.

.NET platformunda, modeli yürütmenin farklı aşamalarında iki farklı derleyici vardır: biri Roslyn derleyicisi olarak adlandırılır, C# ve VB kodlarını montajlar halinde derler; Diğeri ise RyuJIT derleyicisi olarak adlandırılır ve bu derleyici, montajdaki IL (ara dil) kodunu makine koduna derler.

Bu makale Roslyn derleyicisiyle başlıyor. Nasıl çalıştığını anlamamız gerekmiyor, ama nasıl çalıştığını anlamak, ne için kullanılabileceğini bilmek için.

Başlangıçta, C# dilinin derleyicisi C++ dilinde yazıldı, daha sonra Microsoft, C# dilinde yazılmış yeni bir derleyici tanıttı: Roslyn, bu bir önyükleme derleyicisidir.

Önyükleme derleyicisi, belirli bir programlama dilinin derleyicisinin kendi dilinde yazılmış olması anlamına gelir. Bootstrap derleyicisinin her versiyonu, kendisinden önceki bir versiyonla derlenir, ancak ilk versiyonu, Roslyn'in C++ dilinde derlenen bir derleyici tarafından derlenmiş başka bir dilde yazılmış bir derleyici tarafından derlenmesi gerekir. Birçok programlama dili olgunlaşır ve C# ve Go gibi kendi derleyicilerini kullanarak kendi derleyicilerini yazar.

.NET platformunda, Roslyn derleyicisi C# ve VB kodlarını derlemekten sorumludur.

Mevcut geleneksel derleyicilerin çoğu, kaynak kodunu çalıştırılabilir dosyalara veya kütüphane dosyalarına dönüştüren "kara kutu" kalıplarıdır ve arada ne olduğunu bilmemizin bir yolu yok. Roslyn'in aksine, Roslyn API'ler aracılığıyla kod derleme sürecinin her aşamasına erişmenizi sağlar.

Çalışma mekanizması boru hattı tabanlıdır; dört aşamadan oluşur; her biri bağımsız bir modüldür ve her modül karşılık gelen bir API sağlar. Entegre geliştirme ortamları (IDE'ler), bu API'leri kullanarak kod vurgulama, akıllı ipuçları, yeniden yapılandırma araçları, performans analiz araçları ve daha fazlası gibi geliştirme verimliliğini artırmak için pratik araçlar sağlayabilir. Ayrıca, Roslyn ile geliştiriciler derleyiciyi kendi programlarında bir hizmet olarak kullanabilirler.

Roslyn tarafından sağlanan API'lerden yararlanarak kod örneklerini dinamik olarak üretin

İlk olarak, yeni bir ClassLibraryGenerator kütüphanesi oluşturun ve netstandard2.0 hedef çerçeve adını (TFM) hedefleyen bir .NET standart kütüphane projesi oluşturun. NuGet paketleri Microsoft.CodeAnalysis.Analyzers ve Microsoft.CodeAnalysis.CSharp eklenince, csproj aşağıdaki şekilde yapılandırılır:


Kendi kaynak üreticinizi aşağıdaki gibi belirten yeni bir C# dosyası oluşturun TestSourceGenerator.cs:

Bağlam nesnesinden derlenmiş giriş noktasına veya Ana yönteme erişebiliriz. MainMethod örneği, bir metod veya benzer yöntemin sembolünü temsil eden bir IMethodSymbol'dur (yapıcılar, yıkıcılar, operatörler veya nitelik/olay erişimcileri dahil). Microsoft.CodeAnalysis.Compilation.GetEntryPoint yöntemi, programın giriş noktasının IMethodSymbol'unu döndürür. Diğer yöntemler ise projenizdeki herhangi bir metod sembolünü bulmanızı sağlar. Bu nesnede, isim alanını (varsa) ve içinde bulunduğu türü çıkarabiliriz. Bu örnekteki kaynak, oluşturulacak kaynak kodunu şablonlayan bir interpolasyonlu bir dizidir; bu aralıklar içerdiği isim alanı ve tür bilgisini doldurur. İstem adıyla bağlama kaynak ekleyin. Bu örnek için, oluşturucu, konsol uygulamasında kısmi metodun uygulanmasını içeren yeni bir derleme kaynak dosyası oluşturur. Herhangi bir favori kaynağı eklemek için bir kaynak oluşturucu yazılabilir.

Aşağıdaki kodla yeni bir ConsoleApp4 konsol uygulaması oluşturun (üst düzey ifadeler olmadan):

Aynı zamanda, ClassLibraryGenerator proje referansını aşağıdaki gibi ekleyin:

Konsol uygulamasını aşağıdaki çıkışla başlatmayı deneyin:



Visual Studio'da, "Dependencies" - > "Analyzer" - > "ClassLibraryGenerator" - > "ClassLibraryGenerator.TestSourceGenerator" projesine tıklayın, oluşturulan kodu görmek için "Program.g.cs" dosyasına çift tıklayın, aşağıdaki gibi:



Istemi:Oluşturucunun kodunu değiştirmek, Visual Studio'nun yeniden başlatılması ve bunu görmek için gerekebilir

Roslyn GitHub adresi:Bağlantı girişi görünür.

Referans:

Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür.




Önceki:Visual Studio'da C# Etkileşimli pencere kullanılarak kod çalıştırma
Önümüzdeki:Windows 11 orijinal ISO görüntü dosyası indir
 Ev sahibi| Yayınlandı 10.03.2024 10:59:12 |
.NET'te JIT ve AOT derlemesi arasındaki giriş ve fark
https://www.itsvse.com/thread-10734-1-1.html
 Ev sahibi| Yayınlandı 6.07.2024 16:59:59 |
Roslyn'i kullanarak C# kodunu dinamik olarak derleyin ve çalıştırın
https://www.itsvse.com/thread-10786-1-1.html
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com