#if(DEBUG)
......Code......
#else
......Code......
#endif
我有一些像这样的代码。如果我的应用程序在调试模式下运行,它应该执行#if(DEBUG)
部分,如果它在发布模式下运行,它应该执行#else
部分。但无论它运行的是什么模式,它都只执行#if(DEBUG)
部分。
使用VS2010的WPF应用程序
任何人都可以帮助我吗?
答案 0 :(得分:14)
对于调试配置,您的项目设置应如下所示
对于Release,它们看起来应该是这样的
您能否确认是这种情况,如果有,请告诉我们?
如果没有,每种配置有什么用?
答案 1 :(得分:3)
使用所有默认设置创建一个新项目,并检查您是否可以按预期方式工作。如果是这样,您的问题项目必须以某种方式“损坏”,可能是通过在发布配置中定义DEBUG常量,或者为发布解决方案配置选择调试项目配置。
答案 2 :(得分:1)
这取决于您如何创建配置。例如,如果您创建配置并使用debug或release作为模板,则DEBUG或RELEASE将被复制到已定义的constraints元素。它不会将已定义的约束元素(在项目文件中)更改为新的配置名称。
打开项目文件并查找配置部分。确保平台,下面的示例是“PROD”在DefineConstants元素中有一个条目。如果是这样,预编译器指令将无法在代码中按预期工作。
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'PROD|x86'">
<DefineConstants>PROD;TRACE</DefineConstants>
<OutputPath>bin\x86\PROD\</OutputPath>
</PropertyGroup>
答案 3 :(得分:0)
我想在你的项目属性中,在Build下你已经检查了Define DEBUG constant
。
尝试将配置模式设置为Release
并再次运行您的应用程序。 Release
的默认值是DEBUG
常量未定义,如果你当然没有被篡改的话;)
如果<{1}} 未选中,则表示您某处Define DEBUG constant
潜伏着。
所以要做两件事。在Release模式下检查选项中的常量,并检查是否有任何手动定义的常量。它应该是其中之一。
答案 4 :(得分:0)
你为什么把DEBUG放在括号之间?
#if DEBUG
Code
#else
Code
#endif