2008-10-17 34 views
21

Tôi có một tập tin tiêu đề như thế này:Làm cách nào để hiển thị đầu ra trong ngăn Thông báo của Danh sách Lỗi cho Visual Studio 2005?

#ifndef __GEN_NOTE_MARKERS_TO_DEVELOPERS_HPP__ 
#define __GEN_NOTE_MARKERS_TO_DEVELOPERS_HPP__ 

    #ifdef _DEBUG 

    // macros for turning a number into a string 
    #define STRING2(x) #x 
    #define STRING(x) STRING2(x) 

    #ifdef TRIAGE_MESG_AS_WARNING 
     #define TRIAGE_TODO_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : warning : TRIAGE TO-DO: " STRING(description))) 
     #define TRIAGE_FIXTHIS_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : warning : TRIAGE FIXTHIS: " STRING(description))) 
    #else 
     #define TRIAGE_TODO_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : message : TRIAGE TO-DO: " STRING(description))) 
     #define TRIAGE_FIXTHIS_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : message : TRIAGE FIXTHIS: " STRING(description))) 
    #endif 
    #else 
    #define TRIAGE_TODO_TAG(description) 
    #define TRIAGE_FIXTHIS_TAG(description) 
    #endif 

#endif // __GEN_NOTE_MARKERS_TO_DEVELOPERS_HPP__ 

Những kết quả đầu ra ghi chú để cửa sổ đầu ra trong Visual Studio 2005. Khi 'TRIAGE_MESG_AS_WARNING' được định nghĩa, Visual Studio sẽ thu hoạch các thư này và liệt kê chúng như cảnh báo trong Lỗi Danh sách. Nó thực hiện điều này vì định dạng văn bản khớp với cảnh báo. Tuy nhiên, tôi không muốn họ hiển thị như cảnh báo tất cả các thời gian, tôi thà họ xuất hiện trong ngăn Thông điệp của Danh sách Lỗi.

Làm thế nào để bạn dòng định dạng mà bạn đặt trong "Output Window" để Visual Studio sẽ tự động kỳ diệu cho họ trong "Tin nhắn" tab "Danh Lỗi" cửa sổ?

Định dạng tôi đã thiết lập cho thư trong mã ở trên trông giống như thông báo từ đầu ra khác, nhưng không được thu thập theo cùng một cách.

Một đồng nghiệp đề xuất với tôi rằng tôi có thể cần viết 'đối tượng tự động hóa tùy chỉnh' để ghi vào ngăn Thư. Điều đó có vẻ giống như một nỗi đau, đặc biệt là vì nó là tầm thường để kết thúc với các mục trong ngăn lỗi và ngăn cảnh báo chỉ đơn giản bằng cách định dạng thích hợp. Đây có phải là một con đường có thể không?

Chúng tôi đang sử dụng C++ không được quản lý, vì vậy chúng tôi không thể dựa vào công cụ được quản lý (.NET). Chúng tôi không muốn mở rộng VS bằng móc.

+1

Bất kỳ ai cố gắng làm việc này trong Visual Studio 2010? – bzlm

Trả lời

5

Tôi tin rằng họ chỉ cần quên về việc thêm danh mục bổ sung: thông tin. Ít nhất nó không được chỉ định ở định dạng đầu ra cho các công cụ bên ngoài.

lời trích dẫn: "Thể loại phải là 'lỗi' hoặc 'cảnh báo' Case không quan trọng như nguồn gốc, chủng loại phải không có tính cục bộ..."

Link: http://blogs.msdn.com/msbuild/archive/2006/11/03/msbuild-visual-studio-aware-error-messages-and-message-formats.aspx

+0

Tôi không nghĩ sẽ có bất kỳ giải pháp kỳ diệu nào sắp ra mắt bất cứ lúc nào. Có vẻ như vì bất kỳ lý do gì, nó không thể truy cập được cho các công cụ bên ngoài (hoặc thậm chí là các thông báo được tạo macro). – Aaron

0

Tôi có thể không hiểu chính xác câu hỏi của bạn nhưng tôi vẫn sẽ cung cấp cho nó một bức ảnh.

Bạn đã xem xét ý nghĩa TraceSwitch chưa? Bạn có thể triển khai các trình nghe khác nhau và xuất thông tin tới nhiều nguồn khác nhau như văn bản, bảng điều khiển, v.v.

Đó có thể là những gì bạn cần.

Chúc may mắn!

+0

Có vẻ như chỉ dành cho mã được quản lý. Chắc chắn một dẫn tốt nếu đó là những gì tôi đang sử dụng, nhưng tôi đang làm không được quản lý C + +. – Aaron

+0

vâng, tôi đã không chắc chắn nếu bạn đã có nó cho tình hình của bạn nhưng tôi nghĩ rằng tôi ít nhất sẽ cung cấp cho bạn một khởi đầu! :) – scootdawg

-2

Bạn không thể sử dụng lệnh "Dấu vết" trong mã của mình? Điều này sẽ chỉ đặt bất kỳ văn bản mà bạn nói với nó trong cửa sổ Output. Vì vậy, đối với việc đặt các thông báo lỗi, bạn cần phải định dạng chúng trước tiên.

+0

Tôi quan tâm đến Ngăn Thông báo của Danh sách Lỗi, không phải cửa sổ đầu ra. Tôi đánh giá cao việc bạn đã trả lời nhưng không giải quyết được câu hỏi. – Aaron

2

OK Tôi đã có một cuộc săn lùng xung quanh và có vẻ như bạn có thể thực hiện việc này nếu bạn đã cài đặt Visual Studio SDK.

Tôi thấy liên kết này here

Bạn sẽ cần phải sử dụng các không gian tên Microsoft.VisualStudio.Shell Tôi tin.

Snippets mã từ liên kết ở trên như sau:

//Get the "Error List Window" 

ErrorListProvider errorProvider = new ErrorListProvider(this); 
Task newError = new Task(); 
newError.ErrorCategory = TaskErrorCategory.Error; // or TaskErrorCategory.Warning for warnings 
newError.Category = TaskCategory.BuildCompile; 
newError.Text = "Some Error Text"; 
errorProvider.Tasks.Add(newError); 

Tôi đã không cố gắng này, vì vậy nếu bạn thành công bạn có thể gửi lại đây để tham khảo sau này xin vui lòng.

1

Tôi đã cố gắng để có được điều này để làm việc là tốt, và như xa như tôi có thể nói, không thể của nó, trừ khi bạn thực sự viết plug-in của riêng bạn cho VS rằng phân tích đầu ra và tạo ra nhiệm vụ . Đây sẽ là một tính năng thực sự hữu ích, và tôi chỉ hy vọng họ thêm nó vào một thời điểm nào đó trong tương lai (không thể tự viết một plug-in cho mình, quá nhiều dự án nhỏ khác để dành thời gian: L)

Cuối cùng, tôi đã chọn để xuất nó như một cảnh báo, mà không phải là quá xấu, nhìn thấy như thế nào tôi cố gắng sửa chữa tất cả các cảnh báo (hoặc nếu họ là cố ý, biến cảnh báo tắt cho rằng chút mã và nhận xét nếu nó không rõ ràng tại sao cảnh báo bị bỏ qua)

+0

Đồng nghiệp của tôi đã nói nhiều như vậy. Bạn và anh ta có lẽ đúng. Đồng nghiệp nói với tôi rằng VS 2010 thậm chí không có ngăn thông báo. Cảm ơn câu trả lời! – Aaron

0

Bạn đã thử tùy chỉnh từ khóa Danh sách nhiệm vụ chưa?

This page cho biết có thể làm như vậy. Tôi đề nghị bạn đọc từ đó, trong trường hợp bạn chưa có.

+0

Tôi không thực sự quan tâm đến danh sách công việc. Tôi quan tâm đến ngăn thông báo của danh sách lỗi. Cảm ơn câu trả lời. – Aaron

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