我有一些工具可以在.NET解決方案上執行更新,但他們需要知道解決方案所在的目錄。以編程方式從插件中獲取當前的Visual Studio IDE解決方案目錄
我將這些工具添加爲外部工具,它們出現在IDE Tools菜單中,並提供$(SolutionDir)
作爲參數。這工作正常。但是,我希望這些工具能夠通過自定義頂級菜單(爲其創建Visual Studio集成包項目)和解決方案節點上的上下文菜單(爲此我創建了一個Visual Studio加載項目)。我正在尋找通過這些上下文獲取當前解決方案目錄的方法。
我試圖從VisualStudio.DTE
對象獲取解決方案的信息:
EnvDTE.DTE dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");
string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName);
但是,這將返回解決方案目錄的加載項,而不是當前的解決方案。
我試圖呼應$(SolutionDir)
和回讀:
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "echo $(SolutionDir)");
// The following commands are needed to redirect the standard output.
// This means that it will be redirected to the Process.StandardOutput StreamReader.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
string result = proc.StandardOutput.ReadToEnd();
不過,這回的目錄的IDE,而不是當前的解決方案。
我在解決方案節點CommandBar
中沒有看到任何相關信息。
或者,如果有方法以編程方式訪問已定義的Visual Studio外部工具並啓動它們(使用已定義的宏參數),那就行了。
解決方案是什麼?
2+再次顯然我在這裏跟蹤你有了這個DTE瘋狂笑 – Terrance 2010-12-02 22:04:16