Sorumluluk reddi : Roslyn ekibinde Microsoft için çalışıyorum.
CodeDom, Roslyn'in öncüsüdür, ancak yalnızca marjinal olarak ilişkilidir. Esasen, CodeDom, tasarımcıları desteklemek için .NET 1.0'da eklenen kod oluşturmanın basit ve (bir şekilde) dilden bağımsız bir yoludur (bir la WinForms). CodeDom, C #, VB ve diğer dillerde kod üretebilen birleşik bir model sağlama girişimi olduğundan, desteklediği dillerden herhangi birinde yüksek doğruluktan yoksundur (bu nedenle CodeDom ile bir anahtar ifadesi oluşturamazsınız). CSharpCodeProvider.CompileAssemblyFromSource, csc.exe'yi yürütmek için kullanılan bir sarmalayıcıdır.
Roslyn tamamen farklı bir hayvandır. Yönetilen kod kullanılarak C # ve VB derleyicilerinin sıfırdan yeniden yazılmasıdır - C #'da C # ve VB'de VB (bugün gönderilen csc.exe ve vbc.exe sürümleri yerel kodda yazılmıştır). Bunları yönetilen kodda oluşturmanın avantajı, kullanıcıların gerçek derleyicilere .NET uygulamalarından kitaplıklar olarak başvurabilmeleridir (sarmalayıcılara gerek yoktur).
Derleyici ardışık düzeninin her bir bileşenini oluştururken, genel API'leri en üstte gösterdik:
- Ayrıştırıcı -> Sözdizimi Ağacı API'si
- Sembol Tablosu / Meta Verileri İçe Aktarma -> Symbol API
- Bağlayıcı -> Bağlama ve Akış Analizi API'leri
- IL Verici -> Emit API
Roslyn, karmaşık bir C # ve VB kaynak kodu oluşturucu olarak kullanılabilir, ancak CodeDom ile olan benzerliğin bittiği yer burasıdır. Roslyn Derleyici API'leri, kodu ayrıştırmak, anlam analizi yapmak, kodu dinamik olarak derlemek ve değerlendirmek vb. İçin kullanılabilir.
Derleyici ek olarak, Roslyn ekibi ayrıca Visual Studio C # yeniden inşa ediyor ve VB IDE özellikleri üstünde kamu derleyici bir API. Bu nedenle, derleyici API'leri IntelliSense ve Çıkarma Yöntemi yeniden düzenleme gibi Visual Studio tasarım zamanı araçlarını oluşturmak için yeterince zengindir. Ayrıca, derleyicinin üzerindeki katmanlarda Roslyn, üst düzey analiz veya veri dönüşümü için hizmetler sunar. Örneğin, C # ve VB biçimlendirme kurallarını kullanarak kodu biçimlendirmek veya bir çözüm içindeki belirli bir sembole yönelik tüm başvuruları bulmak için hizmetler vardır.
Gerçekten, sadece orada değil bir CodeDOM üzerinde Roslyn özel yarar. CodeDom'un çok özel bir kod oluşturma ihtiyacını karşıladığı yerlerde Roslyn, aklınıza gelebilecek hemen hemen her tür C # veya VB dil aracı oluşturmanıza olanak tanıyan bir çerçeve sağlayarak tüm dil araç oluşturma alanını ele alıyor.