如何找出 Visual Studio 2019 重建未修改的 .NET Core 项目的确切原因

EM0*_*EM0 3 msbuild build visual-studio-2019

我正在 VS2019 (16.1.1) 中构建一个包含 .NET Standard 2.0 和 .NET Core 2.0 项目(C# 和 F#)的解决方案。如果我多次构建而没有更改,第二个和后续构建应该说“构建:0 成功,0 失败,X 是最新的”,但它有时每次都会重建一些项目。我如何确切地找出原因?

有很多关于此的问题和博客文章,其中大多数建议将构建日志详细程度设置为“诊断”并寻找“不是最新的”。我已经这样做了,但没有找到字符串,也不是“不是最新的”(但“最新”出现了很多次)。所以这似乎在 VS2019 中发生了变化。我也知道 U2DCheckVerbosity 注册表设置,但这仅适用于 .NET Framework。通读构建日志输出是不切实际的,因为它超过 36 万行,所以我需要知道要搜索什么。

请注意,我不是在寻找关于问题可能是什么的猜测- 我正在寻找一种让 VS/编译器告诉我的方法。

Lan*_*SFT 5

我正在寻找一种方法让 VS/编译器告诉我。(对于 VS2019)

很难重现相同的问题,所以我不确定您的问题的原因。但是至于您要问的是在输出窗口中查找最新相关信息的方法,也许您可​​以检查Up To Data Checks option.net 核心。

转到工具=>选项=>项目和解决方案=>.net core=>数据检查。确保您已检查Don't call MSBuild if a project appears to be up-to-date. 然后将其更改Logging LevelInfo or Verbose.(根据您的需要选择合适的级别)

对于普通的 .net 框架项目或 C++ 项目,build output verbosityinbuild and run会有很大帮助。但是当试图找出 VS 认为一个.net core or .net standard项目已过时的原因时,我认为我们可以尝试这个选项,因为它的输出更清晰。

例如:(一个 .net Core 项目取决于具有Info level.net core Up-To-Date Check的 Standard 项目):

在此处输入图片说明

如果你在一个解决方案中的项目太多,我建议你一次构建一个项目,而不是构建整个解决方案,这样你可以更容易地找到重建的原因。

  • 这个答案帮助我在 VS2019 中找到 SDK 样式项目 -> 最新检查。谢谢! (2认同)