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