Tôi có một số công cụ thực hiện cập nhật trên các giải pháp .NET, nhưng chúng cần phải biết thư mục chứa giải pháp.Lập trình thư mục giải pháp Visual Studio IDE hiện tại từ addins
Tôi đã thêm những công cụ này làm Công cụ bên ngoài, nơi chúng xuất hiện trong trình đơn Công cụ IDE và cung cấp $(SolutionDir)
làm đối số. Điều này hoạt động tốt. Tuy nhiên, tôi muốn các công cụ này dễ truy cập hơn trong IDE cho người dùng thông qua trình đơn cấp cao nhất tùy chỉnh (mà tôi đã tạo dự án gói tích hợp Visual Studio) và thông qua menu ngữ cảnh trên các nút giải pháp (trong đó Tôi đã tạo một dự án bổ trợ Visual Studio). Tôi đang tìm một cách để có được thư mục giải pháp hiện tại thông qua các ngữ cảnh này.
tôi đã cố gắng nhận được thông tin giải pháp từ đối tượng VisualStudio.DTE
:
EnvDTE.DTE dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");
string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName);
Nhưng, điều này sẽ trả về thư mục giải pháp cho in thêm, không phải là giải pháp hiện tại.
tôi đã cố gắng lặp lại $(SolutionDir)
và đọc nó trở lại:
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();
Nhưng, này trả lại thư mục cho IDE, không phải là giải pháp hiện tại.
Tôi không thấy bất kỳ thông tin liên quan nào trong nút giải pháp CommandBar
.
Ngoài ra, nếu có cách để truy cập theo chương trình các công cụ bên ngoài Visual Studio đã xác định và khởi chạy chúng (sử dụng các đối số macro đã được xác định), điều đó sẽ hoạt động.
Giải pháp là gì?
2+ một lần nữa dường như tôi đang theo dõi bạn ở đây Với sự điên rồ DTE này lol – Terrance