Disclaimer: je travaille pour Microsoft sur le Roslyn équipe.
CodeDom est un précurseur de Roslyn, mais n'est que partiellement lié. Essentiellement, CodeDom est un moyen simple et (un peu), langage de façon agnostique pour générer du code qui a été ajouté .NET 1.0 à l'appui de designers (à la WinForms). Parce que CodeDom eu une tentative de fournir un modèle unifié qui peut générer du code en C#, VB, et d'autres langues, il n'a pas la haute fidélité avec l'une des langues prises en charge (c'est pourquoi vous ne pouvez pas créer une instruction switch avec CodeDom). CSharpCodeProvider.CompileAssemblyFromSource est tout simplement un wrapper autour de l'exécution de csc.exe.
Roslyn est un tout autre animal. C'est une réécriture à la fois le C# et VB compilateurs à partir du sol à l'aide de code managé -- C# C# et VB en VB (les versions de csc.exe et vbc.exe ce navire d'aujourd'hui sont écrits en code natif). L'avantage de la construction dans le code managé est que les utilisateurs peuvent faire référence à la véritable compilateurs comme les bibliothèques .NET applications (pas de wrappers).
Lors de la construction de chaque composante du compilateur pipeline, nous avons mis en lumière des Api publiques sur le dessus:
- Parser -> Arbre de Syntaxe API
- La Table des symboles/Importation de Métadonnées -> Symbole de l'API
- Binder -> Liaison et d'Analyse des Flux d'Api
- IL Émetteur -> Émettent des API
Roslyn peut être utilisé comme un système sophistiqué de C# et VB générateur de code source, mais c'est là que la ressemblance de CodeDom se termine. Le Compilateur Roslyn Api peuvent être utilisées pour analyser le code, effectuer l'analyse sémantique, de compiler et d'évaluer dynamiquement le code, etc.
Outre les compilateurs, les Roslyn équipe est également à la reconstruction de l'Visual Studio C# et VB IDE fonctionnalités sur le dessus du public compilateur Api. Ainsi, le compilateur Api sont assez riches pour construire le Visual Studio outils de conception, comme IntelliSense et la Méthode d'extraction de refactoring. Aussi, sur les couches au-dessus du compilateur Roslyn offre des services de niveau supérieur d'analyse ou de transformation de données. Par exemple, il y a des services pour la mise en forme du code en utilisant le C# et VB règles de mise en forme, ou de trouver toutes les références à un symbole particulier au sein d'une solution.
Vraiment, il n'y pas qu' une prestation spéciale de Roslyn sur CodeDom. Où CodeDom rempli très spécifique de génération de code de besoin, Roslyn est s'attaquer à l'ensemble de la langue de l'outillage de l'espace en fournissant un cadre de référence pour vous permettre de construire n'importe quelle sorte de C# ou VB outil de langue que vous pouvez penser.