VSTS Visual Studio构建任务不是增量的;不断重建

时间:2017-09-20 11:29:33

标签: azure-devops azure-pipelines azure-pipelines-build-task

VSTS msbuild任务似乎继续执行CoreCompile,尽管禁用了Clean选项并且源文件未受影响(源提取中没有任何更改)。

然而在本地,当我在本地或直接在构建机器上运行msbuild时,它的行为符合预期 - 所有未修改的项目都不会重建; CoreCompile未运行csc.exe

1 个答案:

答案 0 :(得分:1)

我发现这是因为MSBuild生成并静默注入编译的“TargetFrameworkMoniker”文件被写入临时目录,即运行System.IO.Path.GetTempPath()时获得的内容。

然而,VSTS代理指定了自己的临时目录(_temp),并且似乎在每次构建后清除它。这似乎是一种很好的行为 - 应该修复它的MSBuild(IMO)。

如果您的项目使用混合框架,可能无效的快速而肮脏的修复方法是添加此MSBuild选项:

/p:TargetFrameworkMonikerAssemblyAttributesPath=$(Build.Repository.LocalPath)\temp.moniker.cs

或者,您可以使用以下命令禁用文件生成:

/p:GenerateTargetFrameworkAttribute=False