使用Roslyn和.NET Core生成C#代码

Fio*_*onn 6 c# roslyn .net-core

有没有办法使用带有.NET Core的Roslyn生成C#代码.我已经尝试使用Microsoft.CodeAnalysis.CSharp包中的SyntaxFactory.我目前遇到的问题是将正确格式化的代码作为文本从中获取.

到目前为止我见过的所有样本都使用了类似的东西

var ws = new CustomWorkspace();
ws.Options.WithChangedOption (CSharpFormattingOptions.IndentBraces, true);
var code = Formatter.Format (item, ws);
Run Code Online (Sandbox Code Playgroud)

这里的问题是,他们都使用目前与.NET Core不兼容的Microsoft.CodeAnalysis.CSharp.Workspaces软件包.是否有使用Roslyn作为.NET Core代码生成器的替代路由或解决方法?

svi*_*ick 11

Microsoft.CodeAnalysis.CSharp.Workspaces1.3.2 包支持netstandard1.3,因此它应与.Net Core兼容.但它取决于Microsoft.Composition1.0.27,它只支持portable-net45+win8+wp8+wpa81.此框架名称与.Net Core兼容,但前提是您在project.json中导入它.

这意味着要使这项工作,project.json的相关部分应如下所示:

"dependencies": {
    "Microsoft.CodeAnalysis.CSharp.Workspaces": "1.3.2"
},
"frameworks": {
  "netcoreapp1.0": {
    "dependencies": {
      "Microsoft.NETCore.App": {
        "type": "platform",
        "version": "1.0.0"
      }
    },
    "imports": "portable-net45+win8+wp8+wpa81"
  }
}
Run Code Online (Sandbox Code Playgroud)