Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you get the current solution directory from a VSPackage?

Following is how you would get the current solution directory from an add-in:

_applicationObject = (DTE2)application;  // retrieved from OnConnection method string solutionDir = System.IO.Path.GetDirectoryName(_applicationObject.Solution.FullName); 

How would you do this via a VSPackage?

I'm migrating a visual studio add-in to a VSPackage as I'm intending to add some user controls that require a deeper integration with the IDE.

I found some good references on the relative merits of add-ins vs integration packages such as: http://nayyeri.net/visual-studio-addin-vs-integration-package-part-1

And some good tutorials on msdn on VSPackages such as: http://msdn.microsoft.com/en-us/library/cc138589.aspx

I haven't found a good reference yet (on msdn or otherwise) on how the higher level interfaces in add-ins (such as DTE) map to lower level interfaces in VSPackages.

Any good references out there to help with general mapping from add-in interfaces to VSPackage interfaces?

like image 210
Dave Clemmer Avatar asked Feb 25 '10 19:02

Dave Clemmer


1 Answers

I found the answer to the specific question. The VisualStudio.DTE object can be retrieved via the GetService() method as follows:

// Get an instance of the currently running Visual Studio IDE DTE dte = (DTE)GetService(typeof(DTE)); string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName); 
like image 52
Dave Clemmer Avatar answered Sep 29 '22 17:09

Dave Clemmer