I really love LinqPad. Not that it doesn't have features I want, but that it just handles so many things in a convienent way. Starting with the whopping 6mb size. Enough about that.
I was just sure that there was a way to reach into Visual Studio from another process and do stuff. I had forgotten how. I had forgotten that I had even succeeded before. I tried to find a way again. This is the rather short magic that was needed.
var dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");
and a simple ask/command sample in linqpad
const string SolutionExplorerWindow="{3AE79031-E1BC-11D0-8F78-00A0C9110057}";
const string SolutionFolder="{66A26720-8FB5-11D2-AA7E-00C04F688DDE}";
//EnvDTE.DTE
var dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");
dte.Dump();
dte.FileName.Dump();
dte.Solution.FullName.Dump();
dte.Windows.Item(SolutionExplorerWindow).Activate();
//var uih=dte.ActiveWindow.Object as UIHierarchy;
No comments:
Post a Comment