在构建输出中打印消息(这不是警告)

时间:2012-12-14 21:32:25

标签: c# visual-studio-2010

在构建时,我希望能够将消息打印到构建输出窗口,而不会将其归类为警告。即在Visual Studio错误列表中,我希望仅在您打开“消息”过滤器时显示它。

所以,我想要相同的功能 #warning Warning Message 但我不希望它被归类为警告。

上下文

我有很多项目目前会产生很多警告。我首先要做的是防止引入警告。所以,我:

  1. 打开“警告为错误”
  2. 消除并使用#pragma warning disable/restore消除现有警告。
  3. 但是,对于我禁用的警告,我想打印一条消息,指出此处有警告需要调查(因为我还没有调查需要对这些警告做些什么)。例如,许多警告都是“过时”类型的警告,我们确实需要在某些时候去做一些工作。所以,我不希望这些警告消失。

    理想情况下,我会做这样的事情:

    #pragma warning disable 0618
    #message Existing Warning: 0618: IObsoleteInterface is obsolete.
    class MyClass : IObsoleteInterface
    #pragma warning restore 0618
    

    我对处理这个问题的其他方法持开放态度。

3 个答案:

答案 0 :(得分:8)

根据MSDN,您无法扩展#pragmahttp://msdn.microsoft.com/en-us/library/x74w198a.aspx

但是如果ErrorList不是严格的要求,你可以解决这个问题:你可以使用注释来突出显示对你很重要的事情。 如果您在评论开始时添加特殊标记,您将能够在TaskList窗口中跟踪它 所以,你的代码看起来像:

#pragma warning disable 0618
//TODO: Existing Warning: 0618: IObsoleteInterface is obsolete.
class MyClass : IObsoleteInterface
#pragma warning restore 0618

之后,如果你打开View - >任务列表 - >选择下拉菜单中的评论,您会在那里看到您的评论 有3个预定义标记:TODO,HACK和UNDONE - 您可以像MESSAGE一样添加自己的标记并更改它的优先级,使您的代码看起来与您最初期望的类似:

#pragma warning disable 0618
//MESSAGE: Existing Warning: 0618: IObsoleteInterface is obsolete.
class MyClass : IObsoleteInterface
#pragma warning restore 0618

有关令牌的更多信息,请访问:http://msdn.microsoft.com/en-us/library/zce12xx2(v=vs.100).aspx

值得一提的是,如果你使用Resharper,它还有另一个TODO工具。我会在这里找到它:ReSharper - >工具 - >待办事项

答案 1 :(得分:2)

您应该查看csc task's WarningsNotAsErrors参数。当使用TreatWarningsAsErrors = true为此参数指定“可接受”警告列表时,您应该记录现有警告,而新警告将显示为错误。

当然,这不是完全存在与新警告之间的关系,而是一种使用您可以放心的确切警告数字的方法。

但我的第一个建议就是解决这些问题。一旦隐藏在构建之外,它们很少被解决。

答案 2 :(得分:2)

如果您使用的是Visual Studio的“Premium”或“Ultimate”版本,它具有使用规则集进行代码分析的功能。

任何项目,当你右键点击&转到属性,选择代码分析选项卡,它有各种开箱即用设置,如将警告视为错误,禁用某些警告。

您可以将警告配置为忽略或视为错误。您可以使用开箱即用的Microsoft规则集,也可以根据您的要求构建自定义规则集(这不是非常困难并且根据我的要求工作)。

启用托管代码的代码分析:

  1. 在解决方案资源管理器中选择一个项目。
  2. 在“项目”菜单上,单击“属性”。
  3. 点击代码分析。
  4. 选择在Build上启用代码分析(定义CODE_ANALYSIS常量)。
  5. 有关配置代码分析的详细信息,请访问: http://seesharper.wordpress.com/2010/04/02/code-analysis-in-team-build-2010/

    用于构建自定义规则集:

    http://msdn.microsoft.com/en-us/library/dd264974.aspx

    http://blogs.msdn.com/b/codeanalysis/archive/2010/03/26/how-to-write-custom-static-code-analysis-rules-and-integrate-them-into-visual-studio-2010.aspx

    了解规则集&代码分析:

    http://msdn.microsoft.com/en-us/library/dd264996.aspx

相关问题