2016-08-29 119 views
6

是否有一種方法可以使用Roslyn和.NET Core生成C#代碼。我試過使用Microsoft.CodeAnalysis.CSharp包中的SyntaxFactory。我現在堅持的問題是從文本中獲取正確的格式化代碼。用Roslyn和.NET Core生成C#代碼

所有我到目前爲止看到使用類似

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

的問題這裏是樣品,它們都使用的是不與.NET兼容內核包Microsoft.CodeAnalysis.CSharp.Workspaces在這一刻。是否有任何替代路線或解決方案使用Roslyn作爲.NET Core的代碼生成器?

+0

Microsoft.CodeAnalysis.CSharp.Workspaces 1.3.2支持'netstandard1.3',所以它應該與.Net Core兼容。 – svick

+0

問題在於依賴項,而不是直接使用Microsoft.CodeAnalysis.CSharp.Workspaces - 「依賴項Microsoft.Composition 1.0.27不支持框架.NETCoreApp,版本= v1.0」。 – Fionn

+4

Microsoft.Composition是一個PCL,所以如果你在你的project.json中添加''imports':「portable-net45 + win8 + wp8 + wpa81」'你應該可以在.Net Core中使用。 – svick

回答

11

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" 
    } 
}