2016-08-29 11 views
6

.NET Coreを使用してRoslynを使用してC#コードを生成する方法はありますか?私はMicrosoft.CodeAnalysis.CSharpパッケージからSyntaxFactoryを使ってみました。私が現在取り組んでいる問題は、適切な書式設定されたコードをテキストとして取得することです。Roslynと.NETコアでC#コードを生成

私がこれまで見てきたすべてのサンプルは、ここでの問題は、彼らがすべての.NETのコアと互換性がありませんパッケージMicrosoft.CodeAnalysis.CSharp.Workspacesを使用すること、である

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

のようなものを使用します現時点では。 .NETコアでRoslynをコードジェネレータとして使用するための代替ルートまたは回避策はありますか?

+0

Microsoft.CodeAnalysis.CSharp.Workspaces 1.3.2 'netstandard1.3'をサポートしていますので、 .Netコアと互換性があります。 – svick

+0

問題は依存関係であり、Microsoft.CodeAnalysis.CSharp.Workspacesではなく - "依存関係Microsoft.Composition 1.0.27はフレームワーク.NETCoreApp、Version = v1.0をサポートしていません。 – Fionn

+4

Microsoft.CompositionはPCLなので、 "imports": "portable-net45 + win8 + wp8 + wpa81" 'をproject.jsonに追加すると.Net Coreで使用できるはずです。 – svick

答えて

11

パッケージMicrosoft.CodeAnalysis.CSharp.Workspaces 1.3.2はnetstandard1.3をサポートしているため、.Netコアと互換性があります。しかし、それはMicrosoft.Composition 1.0.27に依存し、portable-net45+win8+wp8+wpa81しかサポートしていません。このフレームワークモニカは.Net Coreと互換性がありますが、プロジェクトの.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" 
    } 
} 
関連する問題