使用MSBuild.exe进行增量构建

Sha*_*non 7 msbuild command-line incremental-build

我正在通过Python调用子进程来构建Visual Studio 2010解决方案.当从命令行直接调用时,devenv.com需要15秒才能启动.但是当从Python调用时,它会跳跃大约1.5分钟.

当然,我希望从我们的构建中删除那个死时间.所以我决定测试MSBuild.exe(来自.NET 4).它看起来像MSBuild.exe立即运行.但是......它似乎每次都是完整的构建,而不是增量.

我正在使用的命令是

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" "C:\path\to\my\project.sln" /target:build /maxcpucount:8 /property:Configuration=Release
Run Code Online (Sandbox Code Playgroud)

看起来这应该支持增量构建.但我在网上看到帖子表明msbuild可能无法支持这样的增量版本.

这可能吗?如果是这样,我做错了什么?

更新:

我已经读过这个了.基于

http://msdn.microsoft.com/en-us/library/ms171483.aspx

http://www.digitallycreated.net/Blog/67/incremental-builds-in-msbuild-and-how-to-avoid-breaking-them

好像我需要在.vcxproj文件中设置输入和输出属性.检查我的文件确实丢失了.

什么时候会产生?我的大多数.vcxproj文件都是从Visual Studio 2008转换而来的.但是我还生成了一个缺少输入和输出属性的新项目.

VS2010不会创建具有这些属性的项目吗?

更新:我们已经升级到VS 2013.现在msbuild支持增量构建.从未深入到VS 2010问题的最底层.

Hei*_*erg 2

我认为根据官方消息来源,不支持增量构建的事实是错误的声明,托管增量构建此功能并包含在 VS2010 SP1 中

我们首先在 VS2008 中引入了托管增量构建功能。在 VS2010 中,我们无法将构建系统迁移到 MSBuild 来重新实现托管增量构建功能。我们收到了客户对此功能的强烈要求。因此,我们重新实现了这个功能,并将其包含在VS2010 SP1中。

我在网上找到的其他解决方案

  • 项目应该已经增量构建(只需确保您执行构建而不是重建)。检查增量构建是否有效的最佳方法是从命令行运行构建。第二次构建它几乎不需要时间。

    如果事情仍在重建,那么您可能以某种方式修改了项目,从而扰乱了构建顺序。查看构建日志(通过 /v 选项)可以帮助您指出正在发生的事情。

  • 可能导致增量构建出现问题的其他原因是GenerateResource.TrackFileAccess Property此 API 支持 .NET Framework 基础结构,并且不适合直接在代码中使用。获取或设置一个开关,该开关指定我们是否应该跟踪文件访问模式。