当我选择“调试”配置时,DEBUG
常量处于活动状态。当我选择“释放”配置时,DEBUG
常量不活动。如何基于“配置管理器”创建自己定义的常量?
如何创建自己的配置,使其包含我自己定义的常量。基本上,我希望如此,如果我选择配置“FOOBAR”,在我的项目中有一个常量FOO
和BAR
活动。
我基本上试图避免在我的项目中放入一堆#define FOO
,然后在需要/不需要它们时评论/取消注释。
当我选择“调试”配置时,DEBUG
常量处于活动状态。当我选择“释放”配置时,DEBUG
常量不活动。如何基于“配置管理器”创建自己定义的常量?
如何创建自己的配置,使其包含我自己定义的常量。基本上,我希望如此,如果我选择配置“FOOBAR”,在我的项目中有一个常量FOO
和BAR
活动。
我基本上试图避免在我的项目中放入一堆#define FOO
,然后在需要/不需要它们时评论/取消注释。
根据this article,您可以在项目属性的构建选项卡中定义编译常量。
编辑:要定义构建配置,你可以去构建>配置经理,我想你可以定义编译常量有太多。
下面我总结了如何创建新构建配置(比如TEST_BUILD)比调试/发布等构建以及如何构建新的配置下定义条件编译?
转到生成 - >配置管理器 - >选择“新建” - >输入TEST_BUILD ,然后从 - >清空 - >按下OK键选择复制设置。
另外,除了TEST_BUILD特定的构建设置,您还可以将调试或发布构建设置复制到新的TEST_BUILD。
第1步:将现有设置复制到您的新版本配置:
复制设置从 - > - >按确定。 [或]
从 - > - >复制设置按OK。
步骤2:定义一个宏:
转到属性 - >配置属性 - > C/C++ - >预处理器 - >预处理定义 - >定义/添加TEST_BUILD
步骤3:启用/禁用使用宏的代码的一部分TEST_BUILD
这是一个非常古老的问题,但这里是你如何做VS2013。
在项目属性中添加一个常量并不是适合我。
什么工作是打开的。为您的项目添加csproj文件,找到您的配置名称,并将其添加到“DefineConstants”部分。
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'BO4_Production|AnyCPU'">
<OutputPath>bin\BO4_Production\</OutputPath>
<DefineConstants>TRACE;BUSINESS_OBJECTS_4</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
在这个例子中,每当我在VS2013,我改变我的配置为“BO4_Production”,源代码将立即反映,任何部分将反映这一点:
#if BUSINESS_OBJECTS_4
// This is the URL of the Business Objects 4 REST services
string BaseURL = "http://BO3Server:6405/biprws/logon/long");
#else
// This is the URL of the Business Objects 3 web services
string BaseURL = "http://BO3Server:8080/dswsbobje/services/Session";
#endif
这是奇怪的是,这似乎是通过改变配置来实现#define
的唯一方法。
几个月后...
事实上,报废这一点。即使在VS2015中,我也可以在或的“Build”选项卡或直接在.csproj文件中添加我的条件符号,但我的解决方案中的一些项目只是得到它错误。例如,他们有我的符号定义,当该配置,它不应该被定义。 (我检查了配置管理器窗口,它的设置都是正确的,但是VS2015有时候并不正确。)
难道这只是因为修改配置不会强制文件重新编译,你会发现自己的符号在某些文件中定义但不是其他人? – Lolo 2018-02-21 19:09:18
好的。一个问题,但是,你如何定义多个常量?基本上,分隔符是什么? – 2010-10-20 18:59:57
@myermian:我会尝试分号';' – 2010-10-20 19:03:15
分隔符是',',而不是';'。所以你需要输入'FOO,BAR'来设置'FOO'和'BAR'常量。 – broslav 2014-10-31 09:58:44