Visual Studio 2013和MSBuild增量构建不兼容

时间:2014-09-14 21:30:46

标签: visual-studio-2013 msbuild

我正在开发一个具有相当标准的Visual Studio 2013构建链的项目。解决方案中的一个项目仅用于将.hlsl文件编译为.cso文件,然后在运行时加载。从Visual Studio IDE中构建时,增量构建按预期运行;如果我编辑color_ps.hlsl只是将着色器编译成相应的.cso文件。

为了加速开发人员工作流程,我们有一个系统可以自动重新编译,然后在运行时重新加载着色器。基本上,如果应用程序正在运行并且用户编辑了color_ps.hlsl,我将从应用程序启动MSBuild以重建包含着色器的项目,然后重新加载其相应的.cso文件。这里的增量构建按预期工作。

这一切都非常有效,唯一的问题是似乎IDE和MSBuild之间似乎存在一些不兼容性。第一次在运行时使用MSBuild进行编译时,将重建项目中的所有.hlsl文件。进一步重新构建按预期使用增量构建。

此外,退出应用程序后,尝试从Visual Studio IDE中构建着色器项目也会触发完全重建。重新构建后,按预期使用增量构建。

我怀疑为什么会发生这种情况是IDE和MSBuild无法识别出他们的输出已经是最新的。为了澄清,通过IDE和MSBuild 编译生成的输出程序集是相同的,因此无论从何处调用构建,都应该将其识别为最新的。

当在IDE之间切换与在运行时调用MSBuild时,是否有人知道防止这些不必要的完全重建的方法?谢谢!

0 个答案:

没有答案