VSTS msbuild任务似乎继续执行CoreCompile
,尽管禁用了Clean
选项并且源文件未受影响(源提取中没有任何更改)。
然而在本地,当我在本地或直接在构建机器上运行msbuild
时,它的行为符合预期 - 所有未修改的项目都不会重建; CoreCompile
未运行csc.exe
。
答案 0 :(得分:1)
我发现这是因为MSBuild生成并静默注入编译的“TargetFrameworkMoniker”文件被写入临时目录,即运行System.IO.Path.GetTempPath()
时获得的内容。
然而,VSTS代理指定了自己的临时目录(_temp
),并且似乎在每次构建后清除它。这似乎是一种很好的行为 - 应该修复它的MSBuild(IMO)。
如果您的项目使用混合框架,可能无效的快速而肮脏的修复方法是添加此MSBuild选项:
/p:TargetFrameworkMonikerAssemblyAttributesPath=$(Build.Repository.LocalPath)\temp.moniker.cs
或者,您可以使用以下命令禁用文件生成:
/p:GenerateTargetFrameworkAttribute=False