有没有办法做到这一点?
[Conditional("TEST")]
...
或者
#if TEST
#end if
原因是我想将一些测试逻辑封装在库中,而不必将逻辑提取到自己的测试库中。
谢谢!
[Conditional("TEST")]
...
或者
#if TEST
#end if
原因是我想将一些测试逻辑封装在库中,而不必将逻辑提取到自己的测试库中。
谢谢!
听起来你想使用预处理指令(在C#中可用,可能还有其他语言)。具体来说,是在源代码中使用#define和/define编译器选项,以及#if语句。你没有说明你正在使用哪个版本的.NET,但MSDN表明它至少可以回溯到.NET 1.1,至少在Visual Studio 2003中。
按照@steenhulthin所述,简单地创建一个新的构建配置,并添加编译符号TEST。
构建配置的名称并不重要,但是您必须设置此配置的条件编译符号以包括TEST
(项目设置,页面“构建”IIRC)。您还可以在要使用它的每个文件中定义编译符号,而不是项目设置。(#define TEST
)
是的,这是可能的。
创建一个名为TEST的构建配置并
[Conditional("TEST")]
关于您的方法。
要在Visual Studio中创建构建配置,请转到“生成”菜单 -> 配置管理器。 在“活动解决方案配置:”下选择“新建...”。 给一个名称(在您的情况下为TEST),您可能还想将“从副本设置中复制”设置为Debug。
这也允许您使用:
#if TEST
...
#end if
然而,使用#if会将该部分隐藏在编译器中,根据我的经验,当在不同的构建配置之间切换时,由于重构的代码破坏了其他配置,这是很痛苦的根源。
编辑
@Aaronaught提到条件属性不会起作用。我认为天真的解决方案是使用#if
。在这种情况下,您可能需要执行以下操作:
#if TEST
[TestMethod()]
#endif
TestMethod()
属性,以避免向编译器隐藏更多东西。