Sunday, December 18, 2011 4:32 AM
I'd like to access the currently active workspace for a loaded solution. I found this thread, which was helpful, but seems to be missing something I can't quite figure out.
"To actually retrieve the current IWorkspace within a Roslyn extension you should use an IWorkspaceDiscoveryService". A few examples are given, but it's not clear to me where that IWorkspaceDiscoveryService is coming from. How do I get a reference to an implementation of IWorkspaceDiscoveryService?
Monday, December 19, 2011 8:27 PMOwnerYou should be able to "MEF-Import" IWorkspaceDiscoveryService from within your VS extension. I had posted example code to demostrate MEF-Importing of some other Roslyn services on this thread - you should be able to follow similar steps to MEF-Import IWorkspaceDiscoveryService...
While MEF-Importing is probably the easiest way to get at IWorkspaceDiscoveryService, there are also other ways to do this from within a VS extension. The "Syntax Visualizer Tool Window" sample extension that ships with the CTP has some code that demonstrates an alternate way to do this. You can take a look at the code for a property named WorkspaceDiscoveryService in the file SyntaxVisualizerContainer.xaml.cs...
Note that the IWorkspaceDiscoveryService will only be available inside instances of VS that are running under the Roslyn "rootsuffix" - this thread has some details / discussion around this.
Hope this helps! Let me know if you have further questions.
Shyam Namboodiripad | Software Development Engineer in Test | Roslyn Compilers Team
Tuesday, December 20, 2011 2:02 AM
Thanks Shyam. I'll explore the options you mentioned.