Как получить рабочее пространство Roslyn из пакета VS?

Как получить текущее рабочее пространство Roslyn из пакета CTP5 Visual Studio 2015?

я смотрел на

Как получить ссылку на объект рабочего пространства Roslyn из IVsSolution?

а также

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

но я все еще не могу заставить его работать

Workspace.CurrentWorkspace больше не существует

Я попытался импортировать VisualStudioWorkspace, но он по-прежнему нулевой:

public sealed class VSPackage1Package : Package
{
 ....
    [Import]
    public VisualStudioWorkspace Workspace { get; set; }
 ....   
    protected override void Initialize()
    {
    // Workspace is null here...

Где-нибудь есть образец?

1 ответ

Решение

Я не вижу никакого определения VisualStudioWorkspace (или сборки Microsoft.VisualStudio.LanguageServices)

Это там, дважды проверьте, что вы ищете в правильном месте.

[Импорт] работает, только если сам класс, с которым вы работаете, экспортируется в MEF. Если это не так (как пакет в вашем случае), просто напишите:

var componentModel = (IComponentModel)GetService(typeof(SComponentModel));
var workspace = componentModel.GetService<VisualStudioWorkspace>();
Другие вопросы по тегам