Visual Studio 2010 - 在不同的构建配置之间保留项目属性?

时间:2012-02-11 10:59:38

标签: c++ visual-studio-2010 build

我的解决方案中有两个项目。我目前正在使用默认配置模式'Debug'。当我想进行'Release'构建时,我切换到Release-mode然后我看到我以前的所有项目属性都设置为default,这意味着我必须再次手动将所有属性添加到此模式。

有没有一种方便的方法可以在VS2010中解决这个问题,例如将所有属性(如包含路径,预处理器宏,构建宏等)从“调试”复制到“释放”模式?

4 个答案:

答案 0 :(得分:12)

配置设置存储在.vcproj / .vcxproj文件中。你可以在一些文本编辑器中打开它并手动复制一些设置,但这不方便。现在,您只需打开项目属性并复制这些设置,同时在该窗口的左上角切换Debug / Release配置。

下次当您为所有配置设置相同的属性时,请选择配置:All Configurations以避免麻烦。

答案 1 :(得分:5)

物业表可以轻松解决此问题和其他一些与物业相关的问题。

简而言之,项目中的所有属性都只是XML文档中的节点,属性组节点可以具有condition属性。它们很容易在任何文本编辑器中更改,但一个鲜为人知的功能是能够导入其他XML文档,这些文档可以提供设置(除了一些项目特定的文档之外的所有文档)。

This blog post有一个关于使用项目表的好教程,以及this question中的更多信息。您可以在Visual Studio中创建它们,编辑它们(包括复制现有项目设置),然后使用属性 manager (而不是属性窗口)将它们附加到项目中。

属性表中的组使用与常规设置相同的语法,可以为所有配置设置或过滤以仅应用于某些配置。它们也可以使用VS'变量和条件系统按项目名称和其他一些东西进行过滤。例如,我使用:

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  <ClCompile>
    <WarningLevel>Level4</WarningLevel>
    <TreatWarningAsError>true</TreatWarningAsError>
    <Optimization>Disabled</Optimization>
    <EnablePREfast>true</EnablePREfast>
    <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
  </ClCompile>
</ItemDefinitionGroup> 

对于我的一些构建,将相同的设置应用于所有项目(full file here)。

最方便的用途之一是在文件中提供构建目录,因此所有项目都统一构建到同一目录中(确保使用项目名称作为输出)。

答案 2 :(得分:1)

使用宏可以通过一组设置来管理多个不同版本(调试版,发布版,win32版,x64版等)中的几乎所有属性。

因此,在编辑项目设置之前,请确保您已将配置设置为All Configurations,并将平台设置为All Platforms。现在,几乎所有设置都可以通过所有不同的配置以这种方式完成。比如,您希望不同的配置和平台使用不同版本的各种库。假设您使用的命名约定在所有项目中都是一致的,那么您可以使用:

其他图书馆目录:..\..\foo\bar\lib\$(Platform)_$(Configuration)

您可以点击编辑按钮,然后点击Macros>>按钮,查看哪些宏会展开。

答案 3 :(得分:0)

您还可以使用配置管理器重新创建所需的新模式,然后您可以选择要复制所有设置的配置。