2016-07-29 4 views
2

私のプロジェクトでは、rouglynバージョン1.3.2をnugetから使用しています。まず、私は私のコードフォーマットするためにこれらのコードを使用しようとしました:roslynでFormatter.Format(SyntaxNode、Workspace)を使用するには?

​​

をとMSBuildWorkspace.Create()を実行するとき、それはIOExceptionをスロー:

ファイルまたはアセンブリをロードできませんでした「Microsoft.Build、バージョン= 14.0.0.0、 カルチャ=ニュートラル、PublicKeyToken = b03f5f7f11d50a3a 'またはその の依存関係の1つ。システムは、指定されたファイルを見つけることができません。

その後、この質問が言ったように私はNugetからビルドツールをインストールしようとした:MSBuildWorkspace.Create() throws exception

そして私は、エラーの多くを得るので、私はそれをアンインストールし、そのすべてのファイルを削除します。しかし、MSBuildWorkspace.Create()を呼び出そうとすると、IOExceptionがスローされません。私はそれがどのように機能するのか分かりません。

残念ながら、Formatter.Formatを呼び出すと、例外や警告、エラーがまったくなくても、SyntaxNodeはまだフォーマットされません。

さらにもう1つ、ビルドツールやIOExceptionを使わずに、スタンドアロンのコンソールアプリケーションで簡単にコードをフォーマットできます。彼らは同じコードを使用しています。なぜそれは私のプロジェクトと互換性がありませんか?

それでは、BuildToolsのnugetパッケージを使って、それを使うのは正しいですか?

答えて

1

ワークスペースには、実際には構文ルート(プロジェクト内)が含まれている必要があります。空のワークスペースを渡すことはできません。

実際にcsprojまたはslnをロードしない限り、MSBuildはまったく必要ありません。 AdHocWorkspaceを作成し、プロジェクトを追加し、構文ツリーを追加してフォーマットすることができます。

+0

あなたの情報をありがとう、私は仕事に行くときにそれを試してみよう、 –

+0

それは働く。たくさんありがとう! –

関連する問題