2010-03-06 39 views
17

có thể có cách xóa cửa sổ Visual Studio OUTPUT, theo cách lập trình không? Ví dụ, ứng dụng trình gỡ rối của SysInternal có tên là DebugView có specific command called DBGVIEWCLEAR .. sẽ xóa cửa sổ nhật ký.Cửa sổ đầu ra Visual Studio (gỡ lỗi) có bị xóa theo chương trình không?

Vui lòng không nói: nhấp chuột phải, xóa cửa sổ .. bằng chuột. Tôi biết điều đó, nhưng đó không phải là những gì tôi theo đuổi.

+0

tôi hy vọng một người nào đó kiên trì hơn và có thể giảm bớt ánh sáng ... –

Trả lời

6

Đối với VS 2008 thử mã này

EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.9.0"); 
ide.ExecuteCommand("Edit.ClearOutputWindow", ""); 
System.Runtime.InteropServices.Marshal.ReleaseComObject(ide); 

"VisualStudio.DTE.9.0" sẽ thay đổi từ phiên bản VS lên phiên bản.

+0

những gì lắp ráp/không gian tên để tôi cần tham khảo f hoặc EnvDTE80? (btw. Tôi đang ở VS2010). –

+0

Đã thêm EnvDTE.dll và EnvDTE80.dll. –

+0

Vì vậy, điều này có nghĩa là mã này là VERY Visual Studio phụ thuộc phiên bản? (Và nó không hoạt động trong RC2010 RC ... ngay cả khi tôi thay đổi để 'GetActiveObject (" VisualStudio.DTE.10.0 ");' Biên dịch và chạy, nhưng không rõ ràng rằng cửa sổ. –

-2

Còn khoảng Console.Clear() thì sao?

+2

Điều đó chỉ hoạt động trong ứng dụng giao diện điều khiển: (http://stackoverflow.com/questions/766173/how-to-clear -the-console-in-c-net –

2

Câu trả lời đầu tiên hoạt động trên bất kỳ bản phát hành nào sau Visual Studio 2005, nhưng có vẻ như một chút không ổn định. Tôi đã phải đặt một sự chậm trễ 1 giây trước khi thanh toán bù trừ giao diện điều khiển và không thể có được nó tốt hơn thế. Không có ý tưởng tại sao, nhưng nó tốt hơn không có gì. Nó cũng chỉ hoạt động nếu bạn chỉ chạy một thể hiện của Visual Studio. . Có lẽ tôi "sẽ làm cho một phần mở rộng mà nhìn vào các RunningObjectTable để chọn phiên bản đúng

Dù sao đi nữa, điều này làm việc nhiều hơn hoặc ít

using System; 
using System.Diagnostics; 
using System.Runtime.InteropServices; 
using System.Threading; 
using System.Windows.Forms; 


namespace VisualStudioHelper { 
    public class VstHelper { 
     // Add a Project Reference to "Microsoft Development Environment Properties 8.0" 
     // (the one for Visual Studio, not SQL Server) 
     public static void VstClearOutputWindow() { 
      if (!Debugger.IsAttached) 
       return; 

      Application.DoEvents(); 
      Thread.Sleep(1000); 
      EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0"); 
      ide.ExecuteCommand("Edit.ClearOutputWindow", ""); 
      Marshal.ReleaseComObject(ide); 
     } 
    } 
} 
+0

tôi có "chuỗi lớp không hợp lệ (Ngoại lệ từ HRESULT: 0x800401F3 (CO_E_CLASSSTRING))" trong EnvDTE80.DTE2 ide = (EnvDTE80.DTE2) Marshal.GetActiveObject ("VisualStudio .DTE.10.0 "); –

+0

Chuỗi đó sẽ chỉ hoạt động với Visual Studio 2010 trở lên. Nếu bạn đang sử dụng phiên bản cũ hơn, bạn phải thay đổi số .10 thành một số khác. Nếu bạn đang chạy 2010 hoặc mới hơn Bạn có thể sử dụng tiện ích http://wademan.com/Tools/RunningObjectTableDump.zip hoàn toàn không có giấy tờ của mình để xem các đối tượng nào đang thực sự đang chạy. Tôi chưa sử dụng mã trong bài đăng này trong một thời gian dài, vì vậy Tôi chưa bao giờ thử nghiệm nó với 2013. –

+0

tôi nghĩ rằng vấn đề của tôi là tôi tr ied để làm điều đó với tiết kiệm sharepoint trên aspx với cskdev –

3

Đối với VS 2010:.

//Add reference EnvDTE100 
static void ClearOutput() 
{ 
    EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0"); 
    ide.ToolWindows.OutputWindow.ActivePane.Clear(); 
} 
+0

Với '" VisualStudio.DTE.12.0 "' nó cũng hoạt động tốt trong VS 2013 ... – ChrFin

Các vấn đề liên quan