说例如我有一个名为“MyConfig”的配置的Visual Studio项目,我已经定义了编译符号MY_CONFIG_SYMBOL
。是否可以在VS构建事件中使用条件编译符号?
是否有宏或命令查看MY_CONFIG_SYMBOL
是在前/后生成事件中定义的?像#if MY_CONFIG_SYMBOL
,但为建立事件?
说例如我有一个名为“MyConfig”的配置的Visual Studio项目,我已经定义了编译符号MY_CONFIG_SYMBOL
。是否可以在VS构建事件中使用条件编译符号?
是否有宏或命令查看MY_CONFIG_SYMBOL
是在前/后生成事件中定义的?像#if MY_CONFIG_SYMBOL
,但为建立事件?
我终于找到了答案。以下作品完美:
if "$(DefineConstants.Contains('DEBUG'))" == "True" <command>
这适用于在构建定义的任何常量,但要注意,不变的是区分大小写(“DEBUG” =“调试”!)。
如果您的意思是基于构建类型(Debug或Release)的条件构建,那么是的。看看这些线程:
Conditional Post-build event in Visual Studio 2008
How to run Visual Studio post-build events for debug build only
不,我的意思是使用Debug或Release中定义的条件编译符号。对于Debug配置,通常默认定义的主要条件编译符号是'DEBUG'。你可以在代码中使用它,但是你可以在构建事件之前或之后使用它 –
那么,这是不是一个解决方案,只是想分享一些实验来推进状态。 (我还没有找到一种方法来测试条件编译符号。)
这样的一种方式来巩固和关闭调试:
<#@ 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 #>
你有条件输出与否,分别。
找到答案有什么好运? – Thracx
@Thracx我终于找到了答案。见下文。 –