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

萝らか妹 提交于 2019-11-28 11:39:18
Kevin Pilch

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.

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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!