我试图获取对当前加载的工作区的引用,但没有成功。根据文档(粗体部分)我应该能够获得它的参考。
工作区 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。
Edit:
尝试按照答案中的建议使用开关 /rootSuffx Roslyn ,VS 抛出一个错误,表明它是无效开关。将其更改为 /rootSuffix Roslyn,VS 启动但工作区仍然为空。
正如达斯汀坎贝尔在他的回答中所描述的:如何在 VSPackage 中使用 Workspace.PrimaryWorkspace.CurrentSolution
仅当启用 Roslyn C# 和 Visual Basic 语言服务时,才会填充 Visual Studio 内部的主工作区。
要启用 Roslyn 语言服务,您需要使用以下命令启动 VS:
devenv.exe /rootSuffix Roslyn
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)