2016-08-29 5 views
6

Gibt es eine Möglichkeit, C# -Code mit Roslyn mit .NET Core zu generieren. Ich habe versucht, die SyntaxFactory aus dem Paket Microsoft.CodeAnalysis.CSharp zu verwenden. Das Problem, mit dem ich momentan festhalte, ist, den richtigen formatierten Code als Text zu erhalten.Generieren Sie C# -Code mit Roslyn und .NET Core

Alle Proben, die ich bisher etwas verwenden gesehen habe wie

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

Das Problem hierbei ist, dass sie alle Paket Microsoft.CodeAnalysis.CSharp.Workspaces verwenden, die mit .NET-Core nicht kompatibel ist im Augenblick. Gibt es alternative Routen oder Problemumgehungen für die Verwendung von Roslyn als Code-Generator mit .NET Core?

+0

Microsoft.CodeAnalysis.CSharp.Workspaces unterstützt 1.3.2 'netstandard1.3', es so sollte mit .Net Core kompatibel sein. – svick

+0

Das Problem ist mit einer Abhängigkeit, nicht direkt Microsoft.CodeAnalysis.CSharp.Workspaces - "Die Abhängigkeit Microsoft.Composition 1.0.27 unterstützt Framework .NETCoreApp, Version = v1.0 nicht." – Fionn

+4

Microsoft.Composition ist ein PCL, daher sollten Sie in der Lage sein, in .Net Core zu verwenden, wenn Sie "" import ":" portable-net45 + win8 + wp8 + wpa81 "' zu Ihrem project.json hinzufügen. – svick

Antwort

11

Das Paket Microsoft.CodeAnalysis.CSharp.Workspaces 1.3.2 unterstützt netstandard1.3, so sollte es mit .Net Core kompatibel sein. Aber es kommt auf Microsoft.Composition 1.0.27 an, die nur portable-net45+win8+wp8+wpa81 unterstützt. Dieser Framework-Moniker ist mit .Net Core kompatibel, aber nur, wenn Sie ihn in Ihre project.json importieren.

Das bedeutet, dass diese Arbeit zu machen, sollten die entsprechenden Abschnitte Ihrer project.json wie folgt aussehen:

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