【问题标题】:Visual studio 2010 - retain project properties between different build configurations?Visual Studio 2010 - 在不同的构建配置之间保留项目属性?
【发布时间】:2012-03-03 14:58:30
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      属性表可以轻松解决这个问题以及其他一些与属性相关的问题。

      简而言之,一个项目中的所有属性都只是 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)。

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

      【讨论】:

        【解决方案3】:

        可以使用宏通过单个设置集合来管理跨多个不同构建(调试、发布、win32、x64 等)的几乎所有属性。

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

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

        点击编辑按钮,然后单击Macros&gt;&gt; 按钮,您可以查看宏将扩展为什么。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-08
            • 2011-06-11
            • 1970-01-01
            • 2018-04-29
            • 1970-01-01
            • 2012-01-25
            相关资源
            最近更新 更多