我正在通过 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 问题。