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

VSTS Visual Studio Build task is not incremental; keeps rebuilding

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

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

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

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

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

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

或者,您可以通过以下方式禁用文件生成:

/p:GenerateTargetFrameworkAttribute=False