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

前端 未结 2 527
轻奢々
轻奢々 2020-12-06 14:42

I have a VS Package project from which I need to access Roslyn or Microsoft.CodeAnalysis\' Workspace OR Solution object from the loaded IVsSolution.

I need to know h

相关标签:
2条回答
  • 2020-12-06 15:04

    Within the Initialize() function of your VSPackage, you can use the following:

    var componentModel = (IComponentModel)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SComponentModel));
    var workspace = componentModel.GetService<Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace>();
    

    I believe you'll also need to add an additional reference to: Microsoft.VisualStudio.LanguageServices.dll

    As noted by @Vizu, you can now add this via NuGet:

    Install-Package Microsoft.VisualStudio.LanguageServices
    
    0 讨论(0)
  • The VisualStudioWorkspace is exported through MEF. If you are already using MEF in you package, you can just [Import] it.

    If not, you can QueryService() for the SComponentModel service and then get the VisualStudioWorkspace from that.

    0 讨论(0)
提交回复
热议问题