VS2010 SP1中与构建相关的改进

嗨,我的名字是 李绍 . 我是C++测试团队的软件设计工程师。在VS2010中,C++实现了VCuBube向基于MSBug的项目和构建系统的迁移。我们得到了非常热情的接受,总体客户满意度非常好。你可以看看我以前的一些博客( 本机多目标 , 转换 , 自定义生成规则 对于与C++基于MSBudio的构建系统相关的一些特性和问题。vs2010vs2010sp1即将发布。我想借此机会让您知道我们根据您的反馈在这方面所做的一些改进。

null

托管增量生成

引用托管程序集时,仅当引用的程序集中有重大更改时才需要完全重建。 重要 更改包括程序集版本更改、函数签名、接口更改等。此功能将大大缩短引用托管或托管程序集的托管或托管/本机互操作应用程序的构建时间。

我们首先在VS2008中引入了托管增量构建特性。在VS2010中,我们无法在生成系统移到MSBuild时重新实现托管增量生成功能。我们收到了客户对此功能的强烈要求。因此,我们重新实现了这个特性,它包含在vs2010sp1中。

Enable Managed Incremental Build

增量生成的自定义依赖项文件列表

客户报告的问题之一是,对于VS2010,忽略 //{{没有依赖关系}} 中的行 资源.h MFC应用程序。当有一个 资源.h 手动更改或通过使用资源编辑器添加资源ID来更改,包括 资源.h 重建。这会对性能产生负面影响 资源.h 可以包含在许多文件中。这也是VS2008的一个行为变化。

为了解决这个问题,在vs2010sp1中,我们实现了一个修复程序,这样您就可以指定头文件列表,这些头文件在执行增量构建时要跳过。引入的属性是“ 节点依赖性 ”. 有四种方法可以利用此功能:

1.设置为环境变量

如果对资源头文件的依赖关系在所有项目中都很常见,则可以使用这种方法。例如:set NoDependencies=resource.h;资源2.h .

您可以在启动Devenv的环境中进行设置,也可以在构建环境中进行设置

2.通过属性表设置

可以创建属性表并设置 常规->无依赖项文件列表 要从依赖项检查中排除的文件列表。

No Dependencies File List

3.设置为项目的全局属性

您可以按以下方式将属性设置为“ 全球的 “项目文件的属性:

  1. < 属性组 标签 = 全局 >
  2. < 项目GUID >{ 3C2EE7D3-A2C9-40A5-91F0-3F988C8D5DF5} 项目GUID >
  3. < 关键字 > AtlProj公司 关键字 >
  4. < 节点依赖性 > 资源.h;资源2.h 节点依赖性 >
  5. 属性组 >

4.设置为文件级属性

  1. < 克林克吕德 包括 = 资源.h >
  2. < 节点依赖性 > 是的 节点依赖性 >
  3. 克林克吕德 >

请注意,只有当您想从增量构建中跳过某些标头时,此功能才起作用。它不适用于头文件以外的文件。

托管程序集的签名

在VS2010中,存在一个错误,即在以下情况下无法完成托管程序集的签名: 链接器->高级->延迟标志 设置为“ 是的 ”. 我们之前建议了一种解决此问题的方法。通常,您需要使用生成后步骤对程序集进行签名。这是VS2008行为在功能方面的回归。在vs2010sp1中,我们试图解决这个问题。但是,修复仍然存在一些问题。你可以看看这个 博客 我的同事Amit Mohindra发布的关于如何解决问题的帖子。基本上,您需要手动修改 Microsoft.Cpp.Win32.targets目标 . 你也可以看看这个自述( http://go.microsoft.com/fwlink/?LinkId=210711 –第2.4.1.2节),如果您在SP1 RTM之前使用VS2010转换了应用程序。

这些是我们在SP1中关于C++构建场景的主要变化。请让我知道,如果你认为有问题,我们应该解决。我们将在以后的版本中尝试解决这些问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享