使用 Roslyn 和 .NET Core 生成 C# 代码
Generate C# code with Roslyn and .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);
这里的问题是,他们都使用包 Microsoft.CodeAnalysis.CSharp.Workspaces,目前与 .NET Core 不兼容。使用 Roslyn 作为 .NET Core 的代码生成器是否有任何替代路线或解决方法?
包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"
}
}
有没有办法使用带有 .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.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"
}
}