5

说例如我有一个名为“MyConfig”的配置的Visual Studio项目,我已经定义了编译符号MY_CONFIG_SYMBOL是否可以在VS构建事件中使用条件编译符号?

是否有宏或命令查看MY_CONFIG_SYMBOL是在前/后生成事件中定义的?像#if MY_CONFIG_SYMBOL,但为建立事件?

+1

找到答案有什么好运? – Thracx

+0

@Thracx我终于找到了答案。见下文。 –

回答

2

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

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

这适用于在构建定义的任何常量,但要注意,不变的是区分大小写(“DEBUG” =“调试”!)。

0

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

Conditional Post-build event in Visual Studio 2008

How to run Visual Studio post-build events for debug build only

+3

不,我的意思是使用Debug或Release中定义的条件编译符号。对于Debug配置,通常默认定义的主要条件编译符号是'DEBUG'。你可以在代码中使用它,但是你可以在构建事件之前或之后使用它 –

0

那么,这是不是一个解决方案,只是想分享一些实验来推进状态。 (我还没有找到一种方法来测试条件编译符号。)

这样的一种方式来巩固和关闭调试:

<#@ 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.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 #>你有条件输出与否,分别。

相关问题