2017-02-22 60 views
13

我一直在研究使用Roslyn的工作區API加載項目的VS代碼擴展,此時擴展支持通過ProjectJsonWorkspace類型的.NET Core的舊project.json格式Microsoft.DotNet.ProjectModel.Workspaces包。用於.NET Core的新.csproj格式的Roslyn工作空間

隨着新的工具更改即將發佈,我很樂意支持新的.csproj構建格式,但似乎無法找到支持它的符合.NET標準的工作區。

我的理解是,因爲它使用的是MSBuild,所以我需要使用MSBuild(Microsoft.CodeAnalysis.MSBuild)軟件包,但它目前不支持.NET Standard。

如果存在一個最好的解決方案,或者我將不得不考慮創建自己的工作區實現?

回答

7

地談及與它出現各種各樣的人,有沒有.NET標準兼容MS建立工作區,這可以通過這樣的回答如下所示的following GitHub issue

我們還沒有完成的工作,使MSBuildWorkspace可以與新的MSBuild跨平臺一起正常工作。同時,您可以查看omnisharp如何填充它的工作空間。

如此看來,在寫作的時候,如果你想針對在.NET符合標準的項目的MSBuild工作區,那麼你就需要使用羅斯林的工作空間API構建自己的自定義的工作空間,這正是如何OmniSharp做到了。

更新(16/10/2017):

雖然MSBuildWorkspace確實還沒有支持.NET標準,有一個叫做Buildalyzer庫,跨平臺工作,並會產生AdhocWorkspace你,讓你達到相同的目標。

using Buildalyzer.Workspaces; 
// ... 

AnalyzerManager manager = new AnalyzerManager(); 
ProjectAnalyzer analyzer = 
manager.GetProject(@"C:\MyCode\MyProject.csproj"); 
AdhocWorkspace workspace = analyzer.GetWorkspace(); 

相同的庫也可以讓你引用解決方案文件。

+0

我相信有問題的代碼是這樣的:https://github.com/OmniSharp/omnisharp-roslyn/blob/a4dced28f5f3b38d806134e89a6896c9d8075997/src/OmniSharp.DotNet/DotNetWorkspace.cs。 –

相關問題