3

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

Workspace API 位于 Roslyn.Services 命名空间中,如果您包含以下 using 指令,它们就可用:

使用 Roslyn.Services;

您使用的工作区通常由宿主环境(例如 Visual Studio IDE)直接提供。但是,您可以通过构建自己的 IWorkspace 实例来使用宿主环境之外的工作空间。

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

IWorkspace 工作区 = Workspace.LoadSolution(@"HelloWorld.sln"); ISolution 解决方案 = 工作区.CurrentSolution;

我尝试在单元测试中进行以下操作,但工作区为空。

  IWorkspace workspace = Workspace.PrimaryWorkspace;

  ISolution solution = workspace.CurrentSolution;

我不想加载解决方案,我想在当前加载的解决方案中工作。它是如何完成的?我正在使用 Visual Studio 2012。

编辑:

按照答案中的建议尝试使用 switch /rootSuffx Roslyn,VS 会抛出一个错误,即它是无效的开关。将其更改为 /rootSuffix Roslyn,VS 启动,但工作区仍然为空。

4

1 回答 1

2

正如 Dustin Campbell 在他的回答中所描述的:如何在 VSPackage 中使用 Workspace.PrimaryWorkspace.CurrentSolution

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

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

devenv.exe /rootSuffix Roslyn
于 2013-10-24T20:47:51.013 回答