2010-10-20 120 views
16

当我选择“调试”配置时,DEBUG常量处于活动状态。当我选择“释放”配置时,DEBUG常量不活动。如何基于“配置管理器”创建自己定义的常量?

如何创建自己的配置,使其包含我自己定义的常量。基本上,我希望如此,如果我选择配置“FOOBAR”,在我的项目中有一个常量FOOBAR活动。

我基本上试图避免在我的项目中放入一堆#define FOO,然后在需要/不需要它们时评论/取消注释。

回答

17

根据this article,您可以在项目属性的构建选项卡中定义编译常量。

enter image description here

编辑:要定义构建配置,你可以去构建>配置经理,我想你可以定义编译常量有太多。

+0

好的。一个问题,但是,你如何定义多个常量?基本上,分隔符是什么? – 2010-10-20 18:59:57

+1

@myermian:我会尝试分号';' – 2010-10-20 19:03:15

+2

分隔符是',',而不是';'。所以你需要输入'FOO,BAR'来设置'FOO'和'BAR'常量。 – broslav 2014-10-31 09:58:44

0

下面我总结了如何创建新构建配置(比如TEST_BUILD比调试/发布等构建以及如何构建新的配置下定义条件编译

转到生成 - >配置管理器 - >选择“新建” - >输入TEST_BUILD ,然后从 - >清空 - >按下OK键选择复制设置。

  • 在这里,您必须为解决方案文件下的每个项目手动配置所有新设置。
  • 另外,除了TEST_BUILD特定的构建设置,您还可以将调试或发布构建设置复制到新的TEST_BUILD。

    第1步:将现有设置复制到您的新版本配置:
    复制设置从 - > - >按确定。 [或]
    从 - > - >复制设置按OK。

    步骤2:定义一个宏:

    转到属性 - >配置属性 - > C/C++ - >预处理器 - >预处理定义 - >定义/添加TEST_BUILD

    步骤3:启用/禁用使用宏的代码的一部分TEST_BUILD

1

这是一个非常古老的问题,但这里是你如何做VS2013。

在项目属性中添加一个常量并不是适合我。

enter image description here

什么工作是打开的。为您的项目添加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有时候并不正确。)

+0

难道这只是因为修改配置不会强制文件重新编译,你会发现自己的符号在某些文件中定义但不是其他人? – Lolo 2018-02-21 19:09:18

相关问题