Visual Studio 代码分析器更新后重复重建项目

Visual Studio repeatedly rebuilds projects after code analyser is updated

这与 Visual Studio 2017 社区有关。我们的大部分构建过程更喜欢 VS2015 工具,但也已更新为在 VS2017 工具下构建。

Visual Studio 提供的诊断信息:

Project 'MyProject' is not up to date. Input file '..\codeanalysis\bin\myanalyzer.dll' is modified after output file ''.

单独构建 MyProject 表现出这种行为,每次。但是在强制重建 MyProject 并让其余项目自行解决后,问题就消失了。

当然,直到 下一次 我们更新 MyAnalyzer。

MSBuild 很清楚没有任何变化。有什么办法可以告诉 Visual Studio 吗? 我知道技术上 VS 在这里是正确的,但我知道它不正确。

最后看来我这里确实做错了。试图抑制 VS 的更改检测是不正确的,我应该做的是在分析器更改时强制 MSBuild 重建。

所以基本上,让 MSBuild 的更改检测行为与 VS 匹配,而不是相反。

我通过将分析器程序集作为隐藏的虚拟内容项添加到每个项目来完成此操作,因此我的公共 ItemGroup 现在看起来像:

<ItemGroup>
  <Analyzer Include="@(AnalyzerAssemblies)" />
  <Content Include="@(AnalyzerAssemblies)">
    <Private>False</Private>
    <Visible>False</Visible>
  </Content>
</ItemGroup>

这似乎有预期的结果,导致 MSBuild 在 VS 调用它时考虑分析器时间戳,这使得整个解决方案重建一次然后安定下来。