【发布时间】:2015-01-02 02:05:12
【问题描述】:
我正在通过 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-breaking-them
似乎我需要在我的 .vcxproj 文件中设置输入和输出属性。检查我的文件,这些确实丢失了。
它们何时生成?我的大多数 .vcxproj 文件都是从 Visual Studio 2008 转换过来的。但我还生成了一个新项目,它也缺少输入和输出属性。
VS2010 不会创建具有这些属性的项目吗?
更新:我们已经升级到 VS 2013。现在 msbuild 支持增量构建。从未深入了解 VS 2010 问题。
【问题讨论】:
-
您从哪里看到MSBuild 不支持增量构建的信息?你能发布网址或指针如何找到它吗?
-
这是我找到的帖子。 social.msdn.microsoft.com/Forums/vstudio/en-US/…。让我认为不支持增量构建的观点是“MsBuild 作为一个系统,MSBuild 作为一项任务都没有提供了解有关正在构建的 .sln 的输入和输出的方法。”。但我不清楚这种说法有多准确。因此提出了这个问题。
标签: command-line msbuild incremental-build