Roslyn: Как получить ссылку на Workspace из загруженного в данный момент решения?

Я пытаюсь получить ссылку на загруженную рабочую область, но безуспешно. Согласно документации (часть выделена жирным шрифтом), я смогу получить ссылку на нее.

API-интерфейсы Workspace находятся в пространстве имен Roslyn.Services, и они доступны, если включить следующую директиву using:

использование Roslyn.Services;

Используемое вами рабочее пространство обычно предоставляется непосредственно хост-средой (например, IDE Visual Studio). Однако вы можете работать с рабочим пространством вне среды хоста, создав собственный экземпляр 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 ответ

Решение

Как описано Дастином Кэмпбеллом в его ответе здесь: Как работать с Workspace.PrimaryWorkspace.CurrentSolution внутри VSPackage

Основное рабочее пространство внутри Visual Studio заполняется только тогда, когда включены языковые службы Roslyn C# и Visual Basic.

Чтобы включить службы языков Roslyn, вам нужно запустить VS с помощью следующей команды:

devenv.exe /rootSuffix Roslyn
Другие вопросы по тегам