2010-03-30 43 views
85

Khi thực hiện một ứng dụng giao diện điều khiển trong Java với Eclipse, tôi thấy đầu ra được đặt trong một hộp văn bản trong bản thân IDE, thay vì có một bàn điều khiển bật lên như trong Visual Studio. Điều này có ích, ngay cả sau khi chương trình đã thoát, tôi vẫn có thể sử dụng tốt văn bản được viết trong đó, vì nó không bị xóa cho đến khi tôi chạy lại. Là nó có thể đạt được bất cứ điều gì như thế với Visual Studio? Tôi biết rằng thay vì làmCó đầu ra của một ứng dụng giao diện điều khiển trong Visual Studio thay vì giao diện điều khiển

System.Console.WriteLine(str); 

tôi có thể làm

System.Diagnostics.Debug.WriteLine(str); 

nhưng nó không hẳn là điều tương tự, khi bạn nhận được rất nhiều "rác" trong cửa sổ Output, như tất cả các tải biểu tượng và như vậy.

Thậm chí tốt hơn, có thể có mọi thứ được thực hiện trong chính IDE, khi bạn chạy ứng dụng của mình, thay vì có bàn điều khiển đang chạy?

+0

Phiên bản nào của VS bạn đang sử dụng? – Gabe

+0

Visual Studio 2010 RC –

+0

Bạn có ngăn Kiểm tra kết quả không? – Gabe

Trả lời

30

Trong hộp thoại tùy chọn Visual Studio -> Gỡ lỗi -> Kiểm tra "Chuyển hướng tất cả cửa sổ đầu ra văn bản đến cửa sổ ngay lập tức".

+52

Tôi đã chọn hộp kiểm này nhưng tôi vẫn nhận được cửa sổ bật lên Bảng điều khiển và không có gì trong cửa sổ "Đầu ra" (Gỡ lỗi, Thử nghiệm, Xây dựng, ..) hoặc "Cửa sổ ngay lập tức". – GuiSim

+3

Không làm việc ở tất cả cho tôi, kết quả chính xác giống như trước khi – EvenLisle

+5

@EvenLisle bạn cần phải thay đổi loại ứng dụng cho ứng dụng Windows như trong [câu trả lời của stolsvik] (http://stackoverflow.com/a/9615237/834521). Tùy chọn được đề cập trong câu trả lời này được bật theo mặc định cho tôi trong mọi trường hợp. – TooTone

4

Sử dụng System.Diagnostics.Trace

Tùy thuộc vào những gì nghe bạn đính kèm, dấu vết đầu ra có thể đi đến cửa sổ gỡ lỗi, giao diện điều khiển, một tập tin, cơ sở dữ liệu, hoặc tất cả cùng một lúc. Các khả năng là vô tận, vì việc triển khai TraceListener của riêng bạn là vô cùng đơn giản.

+0

Có, nhưng những gì tôi muốn biết là nếu có thể làm điều đó, mà không phải tự mình thực hiện nó. –

+0

@devoured Lớp Trace chỉ xuất ra cửa sổ gỡ lỗi theo mặc định. Bạn chỉ cần đính kèm thêm thính giả (và có một số đã được viết bạn có thể sử dụng) nếu bạn muốn cũng xem đầu ra ở nơi khác. –

+1

Tôi đã đi đến hộp thoại Tùy chọn gỡ lỗi của tôi và chọn "Chuyển hướng tất cả văn bản cửa sổ đầu ra đến cửa sổ ngay lập tức" để làm cho đầu ra Trace đi đến cửa sổ ngay lập tức để nó không nhận được tất cả lẫn lộn với crap gỡ lỗi. – Gabe

2

Bạn có thể tạo ứng dụng trình bao bọc mà bạn chạy thay vì trực tiếp chạy ứng dụng thực của bạn. Ứng dụng trình bao bọc có thể nghe stdout và chuyển hướng mọi thứ tới Trace. Sau đó thay đổi cài đặt chạy để khởi chạy trình bao bọc của bạn và chuyển vào đường dẫn đến ứng dụng thực để chạy.

Bạn cũng có thể có trình bao bọc tự động đính kèm trình gỡ lỗi vào quy trình mới nếu trình gỡ lỗi được đính kèm vào trình bao bọc.

33

Trong hộp thoại tùy chọn Visual Studio Tùy chọn -> Gỡ lỗi -> Kiểm tra "Chuyển hướng tất cả cửa sổ đầu ra văn bản đến cửa sổ ngay lập tức". Sau đó, chuyển đến cài đặt dự án của bạn và thay đổi loại từ "Ứng dụng bảng điều khiển" thành "Ứng dụng Windows". Tại thời điểm đó Visual Studio không mở ra một cửa sổ giao diện điều khiển nữa, và đầu ra được chuyển hướng đến cửa sổ đầu ra trong Visual Studio. Tuy nhiên, bạn không thể làm bất cứ điều gì "sáng tạo", như yêu cầu đầu vào chính hoặc văn bản hoặc xóa bảng điều khiển - bạn sẽ nhận được ngoại lệ thời gian chạy.

+13

Tôi thấy điều này đặc biệt vụng về. Điều gì, tôi tự hỏi, là lý do đằng sau điều này trong VS? Nó sẽ là khả năng của tất cả các IDE hiện đại trong ngày để có một bảng điều khiển bên trong IDE chính nó hoạt động như giao diện điều khiển cho đầu vào và đầu ra. (trầy xước đầu) –

+5

Câu hỏi nêu rõ cho một _ "giao diện điều khiển ứng dụng" _ và thay đổi nó để cái gì khác chỉ cho mục đích gỡ lỗi, nơi tôi thậm chí không thể 'Console.ReadKey()' chỉ là thẳng lên vô lý! – MickyD

0

Tôi biết đây chỉ là một câu trả lời khác, nhưng tôi nghĩ mình sẽ viết điều gì đó cho các nhà phát triển web mới, những người có thể bị nhầm lẫn về phần "Thay đổi một ứng dụng Windows". trong Visual Studio 2013 mặc định là một loại đầu ra của thư viện lớp.

Ứng dụng web của tôi theo mặc định được đặt làm loại đầu ra của "Thư viện lớp". Bạn không cần phải thay đổi điều đó. Tất cả những gì tôi phải làm là làm theo các gợi ý đi tới Công cụ> Tùy chọn> Gỡ lỗi> Chuyển hướng tất cả văn bản Cửa sổ đầu ra đến Cửa sổ ngay lập tức. Sau đó tôi đã sử dụng đề xuất System.Diagnostics.Trace của Joel Coehoorn ở trên.

0

Thay vào đó, bạn có thể thu thập kết quả trong kết quả kiểm tra.

Bạn không thể cung cấp đầu vào, nhưng bạn có thể dễ dàng cung cấp một số thử nghiệm với các đối số dòng lệnh khác nhau, mỗi thử nghiệm thu thập đầu ra.

Nếu mục tiêu của bạn là gỡ lỗi, đây là một cách ít nỗ lực để cung cấp một kịch bản gỡ lỗi lặp lại.

namespace Commandline.Test 
{ 
    using Microsoft.VisualStudio.TestTools.UnitTesting; 

    [TestClass] 
    public class CommandlineTests 
    { 
     [TestMethod] 
     public void RunNoArguments() 
     { 
      Commandline.Program.Main(new string[0]); 
     } 
    } 
} 
1

Hãy chắc chắn kiểm tra các "Chuyển Tất cả Output ..." hộp kiểm trong gỡ lỗi thiết lập các cửa sổ:

Make sure the check the "**Redirect All Output...**" checkbox in the debugging setting windows:

+7

những gì thú vị là điều này đã được đề xuất một số 7 năm trước đây về câu hỏi này, nó đã không làm việc sau đó và nó không hoạt động ngay bây giờ :) –

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