11

例如,我有一个 Visual Studio 项目,其配置名为“MyConfig”,并且MY_CONFIG_SYMBOL定义了编译符号。

是否有宏或命令来查看是否MY_CONFIG_SYMBOL在构建前/构建后事件中定义?类似的东西#if MY_CONFIG_SYMBOL,但对于构​​建事件?

4

3 回答 3

11

我终于找到了答案。以下工作完美:

if "$(DefineConstants.Contains('DEBUG'))" == "True" <command>

这适用于构建中定义的任何常量,但请注意该常量区分大小写('DEBUG' != 'Debug')。

于 2016-03-16T16:21:02.520 回答
0

如果您的意思是基于构建类型(调试或发布)的条件构建,那么是的。查看这些线程:

Visual Studio 2008 中的条件生成后事件

如何仅为调试构建运行 Visual Studio 构建后事件

于 2012-08-30T21:15:51.447 回答
0

好吧,这不是一个解决方案,只是试图通过分享一些实验来推进状态。(我还没有找到测试条件编译符号的方法。)

这是巩固开关调试打开和关闭的一种方式:

<#@ include file="debug.incl" #>`

some text1
<# if ( xdebug ) { #>
    foo = bas;
<# } #>
more text

其中 debug.incl 包含:

<# 
bool xdebug = true;
#>

第一个文件中的条件 (if) 能够看到 xdebug 的值,因此输出会根据xdebugdebug.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" #>vs.<# template debug=false #>您分别获得或不获得条件输出。

于 2012-10-04T19:05:13.420 回答