Roslyn:如何从当前加载的解决方案中获取对Workspace的引用?

时间:2013-10-24 20:31:06

标签: roslyn

我正在尝试获取对当前加载的工作空间的引用,但没有成功。根据文档(粗体部分),我应该能够获得它的引用。

  

Workspace API可以在Roslyn.Services命名空间中找到   如果您包含以下using指令,则它们可用:

     

使用Roslyn.Services;

     

您使用的工作区通常由主机直接提供   环境(例如Visual Studio IDE)。但是,你可以工作   通过构建您的。在主机环境之外的工作区   拥有IWorkspace实例。

     

您可以通过加载解决方案文件来构建工作区。

     

IWorkspace workspace = Workspace.LoadSolution(@“HelloWorld.sln”);   ISolution solution = workspace.CurrentSolution;

我在单元测试中尝试过,但工作空间为空。

  IWorkspace workspace = Workspace.PrimaryWorkspace;

  ISolution solution = workspace.CurrentSolution;

我不想加载解决方案,我想在当前加载的解决方案中工作。怎么做?我正在使用Visual Studio 2012。

编辑:

按照回答中的建议尝试使用switch / rootSuffx Roslyn,并且VS抛出一个错误,它是无效的切换。将其更改为/ rootSuffix Roslyn,VS启动但工作空间仍为空。

1 个答案:

答案 0 :(得分:2)

如Dustin Campbell在答案中所述:How to work with Workspace.PrimaryWorkspace.CurrentSolution inside VSPackage

  

只有在启用Roslyn C#和Visual Basic语言服务时,才会填充Visual Studio内部的主工作区。

要启用Roslyn语言服务,您需要使用以下命令启动VS:

devenv.exe /rootSuffix Roslyn