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