.NET Derleyici Platformu SDK modelini anlama
Derleyiciler, yazdığınız kodu genellikle insanların kodu okuma ve anlama şeklinden farklı olan yapılandırılmış kuralları izleyerek işler. Derleyiciler tarafından kullanılan modelin temel bir anlayışı, Roslyn tabanlı araçlar oluştururken kullandığınız API'leri anlamak için gereklidir.
Derleyici işlem hattı işlevsel alanları
.NET Derleyici Platformu SDK'sı, geleneksel derleyici işlem hattını yansıtan bir API katmanı sağlayarak C# ve Visual Basic derleyicilerinin kod analizini tüketici olarak size sunar.
Bu işlem hattının her aşaması ayrı bir bileşendir. İlk olarak, ayrıştırma aşaması kaynak metni belirteç haline getirerek dil dil bilgisini izleyen söz diziminde ayrıştırmaktadır. İkincisi, bildirim aşaması kaynak ve içeri aktarılan meta verileri adlandırılmış simgeler oluşturacak şekilde analiz eder. Ardından bağlama aşaması koddaki tanımlayıcıları sembollerle eşleştirir. Son olarak, yayma aşaması derleyici tarafından oluşturulan tüm bilgileri içeren bir derleme yayar.
Bu aşamaların her birine karşılık gelen .NET Derleyici Platformu SDK'sı, bu aşamadaki bilgilere erişime izin veren bir nesne modelini kullanıma sunar. Ayrıştırma aşaması bir söz dizimi ağacını, bildirim aşaması hiyerarşik bir simge tablosunu kullanıma sunar, bağlama aşaması derleyicinin anlam analizinin sonucunu ortaya çıkarır ve yayma aşaması IL bayt kodları üreten bir API'dir.
Her derleyici bu bileşenleri tek bir uçtan uca bütün olarak birleştirir.
Bu API'ler Visual Studio tarafından kullanılanlarla aynıdır. Örneğin, kod ana hat oluşturma ve biçimlendirme özellikleri söz dizimi ağaçlarını, Nesne Tarayıcısı'nı ve gezinti özelliklerini sembol tablosunu, yeniden düzenlemeleri ve Tanıma Git'i semantik modeli, Düzenle ve Devam Et ise YayMA API'si de dahil olmak üzere bunların tümünü kullanır.
API katmanları
.NET derleyici SDK'sı çeşitli API katmanlarından oluşur: derleyici API'leri, tanılama API'leri, betik OLUŞTURMA API'leri ve çalışma alanı API'leri.
Derleyici API'leri
Derleyici katmanı, hem söz dizimli hem de semantik derleyici işlem hattının her aşamasında kullanıma sunulan bilgilere karşılık gelen nesne modellerini içerir. Derleyici katmanı ayrıca derleme başvuruları, derleyici seçenekleri ve kaynak kod dosyaları da dahil olmak üzere tek bir derleyici çağrısının sabit bir anlık görüntüsünü içerir. C# dilini ve Visual Basic dilini temsil eden iki ayrı API vardır. İki API benzer şekildedir ancak her bir dile yüksek uygunluk için uyarlanmıştır. Bu katmanın Visual Studio bileşenlerine bağımlılığı yoktur.
Tanılama API'leri
Derleyici, çözümlemesinin bir parçası olarak söz dizimi, anlamsal ve kesin atama hatalarından çeşitli uyarılara ve bilgilendirme tanılamalarına kadar her şeyi kapsayan bir dizi tanılama üretebilir. Derleyici API katmanı, kullanıcı tanımlı çözümleyicilerin derleme işlemine takılmasını sağlayan genişletilebilir bir API aracılığıyla tanılamayı kullanıma sunar. StyleCop gibi araçlar tarafından üretilenler gibi kullanıcı tanımlı tanılamaların derleyici tanımlı tanılamalarla birlikte üretilmesine olanak tanır. Bu şekilde tanılama oluşturmak, ilkeye dayalı bir derlemeyi durdurma ve düzenleyicide canlı dalgalı çizgiler gösterme ve kod düzeltmeleri önerme gibi deneyimler için tanılamaya bağımlı olan MSBuild ve Visual Studio gibi araçlarla doğal olarak tümleştirme avantajına sahiptir.
Betik OLUŞTURMA API'leri
Barındırma ve betik OLUŞTURMA API'leri derleyici katmanının üzerinde oluşturulur. Kod parçacıklarını çalıştırmak ve bir çalışma zamanı yürütme bağlamı biriktirmek için betik oluşturma API'lerini kullanabilirsiniz. C# etkileşimli REPL (Okuma-Değerlendirme-Yazdırma Döngüsü) bu API'leri kullanır. REPL, C# dilini betik dili olarak kullanmanıza ve kodu yazarken etkileşimli olarak çalıştırmanıza olanak tanır.
Çalışma Alanı API'leri
Çalışma Alanları katmanı, tüm çözümler üzerinde kod analizi ve yeniden düzenleme yapmak için başlangıç noktası olan Çalışma Alanı API'sini içerir. Bir çözümdeki projeler hakkındaki tüm bilgileri tek bir nesne modelinde düzenlemenize yardımcı olur ve dosyaları ayrıştırmaya, seçenekleri yapılandırmaya veya projeden projeye bağımlılıkları yönetmeye gerek kalmadan derleyici katmanı nesne modellerine doğrudan erişim sunar.
Ayrıca Çalışma Alanları katmanı, Visual Studio IDE gibi bir konak ortamında çalışan kod analizi ve yeniden düzenleme araçları uygulanırken kullanılan bir dizi API'yi ortaya çıkar. Örnek olarak Tüm Başvuruları Bul, Biçimlendirme ve Kod Oluşturma API'leri verilebilir.
Bu katmanın Visual Studio bileşenlerine bağımlılığı yoktur.