使用开源发布的“roslyn”来读取代码文件并生成新的代码文件

我从哪里开始?

在我目前的解决方案中,我有这样的模型:

public class MyAwesomeModel { .... } 

我想采用roslyn代码项目来解析源文件并遍历语法树以生成新的代码文件。 获取这些源文件并将它们添加到ac #project文件中,以便在visual studio中再次导入我的解决方案。

我从哪里开始。 克隆roslyn并写一个控制台应用程序,引用所有roslyn并开始挖掘roslyn以了解如何,或者是否有任何博客,documentatino显示这样的东西。

这有点容易。

创建一个控制台应用和参考:

   

这是访问源文本中所有属性的程序:

  class ModelCollector : CSharpSyntaxWalker { public readonly Dictionary> models = new Dictionary>(); public override void VisitPropertyDeclaration(PropertyDeclarationSyntax node) { var classnode = node.Parent as ClassDeclarationSyntax; if (!models.ContainsKey(classnode.Identifier.ValueText)) models.Add(classnode.Identifier.ValueText, new List()); models[classnode.Identifier.ValueText].Add(node.Identifier.ValueText); } } class Program { static void Main(string[] args) { var code = @" using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HelloWorld { public class MyAwesomeModel { public string MyProperty {get;set;} public int MyProperty1 {get;set;} } }"; var tree = CSharpSyntaxTree.ParseText(code); var root = (CompilationUnitSyntax)tree.GetRoot(); var modelCollector = new ModelCollector(); modelCollector.Visit(root); Console.WriteLine(JsonConvert.SerializeObject(modelCollector.models)); } }