Как получить рабочее пространство 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>();