我正在尝试获取对当前加载的工作空间的引用,但没有成功。根据文档(粗体部分),我应该能够获得它的引用。
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启动但工作空间仍为空。
答案 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