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

标签 build msbuild visual-studio-2019

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

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

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

最佳答案

I'm looking for a way to get VS/the compiler to tell me. (For VS2019)

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

Go Tools=>Options=>Projects and Solutions=>.net core=>Up To Data Checks。确保您已选中如果项目似乎是最新的则不要调用 MSBuild。然后将Logging Level更改为Info或Verbose。(根据需要选择合适的级别)

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

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

enter image description here

如果您在一个解决方案中有太多项目,我建议您一次构建一个项目,而不是构建整个解决方案,这样您可以更轻松地定位重建的原因。

关于build - 如何准确找出 Visual Studio 2019 重建未修改的 .NET Core 项目的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57143773/

相关文章:

build - 有效值有限的CMake变量

c++ - 使用 Makefile.am/Makefile.in 在 Ubuntu Linux 中构建 C++ 项目

c++ - 使用 Nuget 在 Visual Studio 2019 中安装 Boost v1.70

c++ - 链接规范无效

android - 在 Android 上构建 Xamarin.Forms 应用程序时识别大量 XA0106 警告的罪魁祸首

ant - Gradle:通过从属性文件中查找 token 来替换 token

msbuild - SSDT Publish 不使用来自 MSBuild 命令行的连接字符串

.net - 在 teamcity 中使用 msbuild 部署到远程服务器

msbuild - 如何从控制台输出中隐藏我在MSBuild Exec任务中使用的命令?

c# - 使用 Visual Studio 2019 在本地调试 Azure Function