如何从VS包中获取Roslyn工作区?

时间:2015-01-28 17:16:25

标签: roslyn visual-studio-2015

从Visual Studio 2015 CTP5 包中,如何获取当前的Roslyn工作区?

我看了

How to get reference to 'Roslyn' Workspace object from IVsSolution?

Roslyn: How to get a reference to Workspace from currently loaded solution?

但我仍然无法使其发挥作用:

Workspace.CurrentWorkspace不再存在

我尝试导入VisualStudioWorkspace但它仍为null:

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

某处有样品吗?

1 个答案:

答案 0 :(得分:6)

  

我没有看到VisualStudioWorkspace(或Microsoft.VisualStudio.LanguageServices程序集)的任何定义

它就在那里,仔细检查你是否在正确的位置。

[导入]仅在您自己工作的课程是MEF导出时才有效。如果不是(就像你的情况下的包),只需写:

var componentModel = (IComponentModel)GetService(typeof(SComponentModel));
var workspace = componentModel.GetService<VisualStudioWorkspace>();