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
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
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.