如何从 VS 包中获取 Roslyn 工作区?
How do I get a Roslyn workspace from a VS package?
从 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,但它仍然为空:
public sealed class VSPackage1Package : Package
{
....
[Import]
public VisualStudioWorkspace Workspace { get; set; }
....
protected override void Initialize()
{
// Workspace is null here...
哪里有样本吗?
I don't see any definition of VisualStudioWorkspace (or the Microsoft.VisualStudio.LanguageServices assembly)
就在那里,仔细检查你找对地方了。
[Import] 仅在您正在工作的 class 本身是 MEF 导出时才有效。如果不是(比如你的包裹),只需写:
var componentModel = (IComponentModel)GetService(typeof(SComponentModel));
var workspace = componentModel.GetService<VisualStudioWorkspace>();
从 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,但它仍然为空:
public sealed class VSPackage1Package : Package
{
....
[Import]
public VisualStudioWorkspace Workspace { get; set; }
....
protected override void Initialize()
{
// Workspace is null here...
哪里有样本吗?
I don't see any definition of VisualStudioWorkspace (or the Microsoft.VisualStudio.LanguageServices assembly)
就在那里,仔细检查你找对地方了。
[Import] 仅在您正在工作的 class 本身是 MEF 导出时才有效。如果不是(比如你的包裹),只需写:
var componentModel = (IComponentModel)GetService(typeof(SComponentModel));
var workspace = componentModel.GetService<VisualStudioWorkspace>();