7

我正在通过 Python 构建一个 Visual Studio 2010 解决方案,并调用 subprocess。当直接从命令行调用时,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

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

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

更新:

我已经阅读了更多。基于

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

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

似乎我需要在我的 .vcxproj 文件中设置输入和输出属性。检查我的文件,这些确实丢失了。

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

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

更新:我们已经升级到 VS 2013。现在 msbuild 支持增量构建。从未深入了解 VS 2010 问题。

4

1 回答 1

2

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

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

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

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

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

  • 可能导致增量构建出现问题的其他原因是GenerateResource.TrackFileAccess Property此 API 支持 .NET Framework 基础结构,并且不打算直接从您的代码中使用。获取或设置一个开关,该开关指定我们是否应该跟踪文件访问模式。
于 2015-02-17T19:10:14.670 回答