首页 > 解决方案 > 代码分析器更新后,Visual Studio 反复重建项目

问题描述

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

Visual Studio 提供的诊断消息很有帮助:

项目“MyProject”不是最新的。输入文件 '..\codeanalysis\bin\myanalyzer.dll' 在输出文件 '' 之后被修改。

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

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

MSBuild 很清楚没有任何改变。有没有办法告诉 Visual Studio?我知道从技术上讲VS 在这里是正确的,但我知道它不正确。

标签: visual-studiomsbuildmicrosoft.codeanalysis

解决方案


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

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

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

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

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


推荐阅读