當我選擇「調試」配置時,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