在构建时,我希望能够将消息打印到构建输出窗口,而不会将其归类为警告。即在Visual Studio错误列表中,我希望仅在您打开“消息”过滤器时显示它。
所以,我想要相同的功能
#warning Warning Message
但我不希望它被归类为警告。
上下文
我有很多项目目前会产生很多警告。我首先要做的是防止引入新警告。所以,我:
#pragma warning disable/restore
消除现有警告。但是,对于我禁用的警告,我想打印一条消息,指出此处有警告需要调查(因为我还没有调查需要对这些警告做些什么)。例如,许多警告都是“过时”类型的警告,我们确实需要在某些时候去做一些工作。所以,我不希望这些警告消失。
理想情况下,我会做这样的事情:
#pragma warning disable 0618
#message Existing Warning: 0618: IObsoleteInterface is obsolete.
class MyClass : IObsoleteInterface
#pragma warning restore 0618
我对处理这个问题的其他方法持开放态度。
答案 0 :(得分:8)
根据MSDN,您无法扩展#pragma
:http://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规则集,也可以根据您的要求构建自定义规则集(这不是非常困难并且根据我的要求工作)。
启用托管代码的代码分析:
有关配置代码分析的详细信息,请访问: http://seesharper.wordpress.com/2010/04/02/code-analysis-in-team-build-2010/
用于构建自定义规则集:
http://msdn.microsoft.com/en-us/library/dd264974.aspx
了解规则集&代码分析: