2016-07-29 38 views
2

我在我的項目中使用nuget中的roslyn版本1.3.2。首先,我試圖用這些代碼格式化我的代碼:如何在roslyn中使用Formatter.Format(SyntaxNode,Workspace)?

​​

和執行MSBuildWorkspace.Create()時,它拋出IOException:

無法加載文件或程序集「Microsoft.Build,版本= 14.0.0.0, Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其 依賴項之一。該系統找不到指定的文件。

然後我試圖從安裝的NuGet作爲編譯工具這個問題說:MSBuildWorkspace.Create() throws exception

我也得到很多的錯誤,所以我將其卸載並刪除其所有文件。但是當我嘗試調用MSBuildWorkspace.Create()時,它不會拋出IOException。我不知道這是如何工作的。

不幸的是,在我調用Formatter.Format後,即使沒有異常或警告或錯誤,SyntaxNode仍然不會被格式化。

還有一件事,我可以在獨立的控制檯應用程序中輕鬆地格式化一些代碼,而無需構建工具或IOException。他們使用相同的代碼。爲什麼這與我的項目不兼容?

那麼使用它的正確方法是什麼,使用BuildTools nuget包時更好?

回答

1

工作空間需要實際包含語法根(在項目中)。你不能只傳遞一個空的工作區。

除非實際上要加載csprojsln,否則根本不需要MSBuild;您可以創建一個AdHocWorkspace,添加一個項目,添加您的語法樹並對其進行格式化。

+0

感謝您的信息,我會在我上班時嘗試, –

+0

It works.Thanks alot! –

相關問題