有没有类似于 #pragma message 的东西?

6
我正在处理一个同时使用C++和C#的项目。我一直在进行混乱的集成工作,并且一直在大量使用#pragma message来标记那些还没有完全实现(因为集成而出现故障)的代码。这是一个非常好的方法,可以使构建日志变得杂乱无章,从而很容易找到需要修复的问题。问题是我找不到任何可以以同样方式处理C#的东西。
我不想使用过时的属性,这完全不是我要找的。我尝试了#warn,但它只会生成一个“警告错误”,导致构建失败。同样,这不是我要找的(如果我想要构建失败,我可以使用#error)。
目前,我只是将我的消息放在可以搜索的注释中,但这需要一些知识来查找,以及查找的动力。在构建日志中使用自定义消息来标记问题要优先考虑,因为它很难被忽视!
我的研究结果表明,没有办法做到我想要的,但我想知道你们专家是否同意我的看法。 :)

微软希望您为以后需要操作的所有内容创建团队基础架构服务器项目。很抱歉,我不知道是否有直接在代码中完成此操作的方法。 - rumtscho
1
就像@LB2所说,#warning有什么问题呢?对我来说,它只会产生警告,而不会使构建失败。 - MicroVirus
1
@Erik 如果你想让所有警告都像错误一样处理(#warning应该可以使用),你可以将项目配置为“将警告视为错误”。 - Chris Baxter
1
我的手指比我的眼睛更快 - 没有看到你已经尝试过了。为什么警告会导致构建失败?你是否打开了“将警告视为错误”的选项?你是否有某种自定义的构建程序会导致警告失败?如果没有,#warning 应该可以正常工作... - LB2
2
C#的做法是抛出NotImplementedException异常。这样更容易搜索,也更难忽略。而且,//TODO的效果很好,在C++中只有在打开源文件时才会显示这些注释。 - Hans Passant
显示剩余3条评论
2个回答

7

我通常使用以下代码:

#warning //Todo Finish this method by....

#warning并不一定需要被视为错误,它在每个项目的项目配置 | 构建选项卡下是可配置的:

enter image description here

在警告描述中,构建日志应该像下面这样:

enter image description here

此外,//Todo 注释将把描述添加到内置任务列表中,从而使您能够区分编译器警告和用户设置的编译器警告:

enter image description here


1

#warning可以完全满足您的需求:产生编译警告,但不会导致构建失败。

也许您已经启用了将警告视为错误的设置?此设置可以在项目配置| 构建选项卡中找到。


1
问题在于,当你接手别人的项目时,如果有超过一千个警告,那么你自定义的警告就无法达到预期效果。 - Szybki
2
如果你在C#中收到很多警告,那么可能你有更大的问题。此外,警告是为了提醒你的,所以如果你因为数量太多而开始忽略警告,那么任何警告都是无用的,不仅仅是用户#pragma的警告,而且你会面临更大的问题。 - MicroVirus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接