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 how I could achieve that ?
I found this stackoverflow discussion here which suggests to use PrimaryWorkspace static property of Workspace class which I can't find in Microsoft.CodeAnalysis.Workspace
EDIT: I found out that Microsoft.CodeAnalysis does not have this yet but I downloaded the older release of Roslyn from Nuget.org which has this. But now PrimaryWorkspace Property is giving me NULL :( I am using Isolated Shell.
Within the Initialize() function of your VSPackage, you can use the following:
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:
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 theSComponentModel
service and then get theVisualStudioWorkspace
from that.