【问题标题】:Generate C# code with Roslyn and .NET Core使用 Roslyn 和 .NET Core 生成 C# 代码
【发布时间】:2016-08-29 02:14:56
【问题描述】:

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

到目前为止我看到的所有示例都使用类似

var ws = new CustomWorkspace();
ws.Options.WithChangedOption (CSharpFormattingOptions.IndentBraces, true);
var code = Formatter.Format (item, ws);

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

【问题讨论】:

  • Microsoft.CodeAnalysis.CSharp.Workspaces 1.3.2 支持netstandard1.3,所以应该兼容.Net Core。
  • 问题出在依赖项上,而不是 Microsoft.CodeAnalysis.CSharp.Workspaces 直接 - “依赖项 Microsoft.Composition 1.0.27 不支持框架 .NETCoreApp,Version=v1.0。”跨度>
  • Microsoft.Composition 是一个 PCL,因此如果将 "imports": "portable-net45+win8+wp8+wpa81" 添加到 project.json 中,您应该可以在 .Net Core 中使用。
  • 现在工作,还没有意识到 PCL 不支持开箱即用。你能把它写成答案,以便我接受答案并奖励你的帮助吗?

标签: c# roslyn .net-core


【解决方案1】:

Microsoft.CodeAnalysis.CSharp.Workspaces 1.3.2 支持netstandard1.3,所以应该兼容.Net Core。但它依赖于Microsoft.Composition 1.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"
  }
}

【讨论】:

    猜你喜欢
    • 2015-03-06
    • 2011-01-03
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多