假设我有一个名为"MyConfig"的Visual Studio项目配置,并且我已经定义了编译符号MY_CONFIG_SYMBOL。那么,在预构建/后构建事件中,是否有宏或命令可以查看MY_CONFIG_SYMBOL是否被定义?类似于#if MY_CONFIG_SYMBOL,但用于构建事件?
我终于找到了答案。以下方法完美地解决了问题:
if "$(DefineConstants.Contains('DEBUG'))" == "True" <command>
这适用于构建中定义的任何常量,但请注意常量是区分大小写的('DEBUG'!='Debug')。
DEBUG
。您可以在代码中使用它,但是您可以在构建前或后事件中使用它吗? - Mike Webb好的,这不是一个解决方案,只是试图通过分享一些实验来推进状态。 (我还没有找到测试条件编译符号的方法。)
这是一种整合调试开关的方法:
<#@ include file="debug.incl" #>`
some text1
<# if ( xdebug ) { #>
foo = bas;
<# } #>
more text
其中 debug.incl 包含:
<#
bool xdebug = true;
#>
第一个文件中的条件(if)能够看到xdebug的值,因此输出会根据debug.incl中的xdebug
设置而改变。
然而,尽管明显包含了debug.incl,但输出文件在更改debug.incl时并未重新构建。即使进行了清理和重建,也似乎无法触发生成,因此需要一些单独的构建结构...
(我尝试过使用debug.tt而不是debug.incl,但没有成功,所以切换到.incl,以便debug.cs不会由debug.tt创建。)
这个并不是很好用,因为它无法识别条件编译符号,但实际上可以根据模板调试属性进行切换!
<#
#if DEBUG
bool xdebug = true;
#else
bool xdebug = false;
#endif
#>
some text1
<# if ( xdebug ) { #>
foo = bas;
<# } #>
more text
使用<#@ template debug="true" #>
和<# template debug=false #>
,分别可以得到有条件的输出或没有条件的输出。