Build 如何找到Visual Studio 2019重建未修改的.NET核心项目的确切原因

Build 如何找到Visual Studio 2019重建未修改的.NET核心项目的确切原因,build,msbuild,visual-studio-2019,Build,Msbuild,Visual Studio 2019,我正在VS2019(16.1.1)中构建一个包含.NET标准2.0和.NET核心2.0项目(C#和F#)的解决方案。如果我多次构建而未进行更改,则第二次和后续构建应显示“构建:0成功,0失败,X更新”,但有时每次都会重建一些项目。我怎样才能找到确切的原因呢 关于这一点,有很多问题和博客帖子,其中大多数建议将构建日志详细性设置为“诊断”并查找“非最新”。我已经这样做了,但是找不到字符串,也不是“最新的”(但是“最新的”出现了很多次)。因此,这似乎在VS2019年有所改变。我还知道U2DCheckV

我正在VS2019(16.1.1)中构建一个包含.NET标准2.0和.NET核心2.0项目(C#和F#)的解决方案。如果我多次构建而未进行更改,则第二次和后续构建应显示“构建:0成功,0失败,X更新”,但有时每次都会重建一些项目。我怎样才能找到确切的原因呢

关于这一点,有很多问题和博客帖子,其中大多数建议将构建日志详细性设置为“诊断”并查找“非最新”。我已经这样做了,但是找不到字符串,也不是“最新的”(但是“最新的”出现了很多次)。因此,这似乎在VS2019年有所改变。我还知道U2DCheckVerbosity注册表设置,但这仅适用于.NET Framework。通读构建日志输出是不现实的,因为它超过360000行,所以我需要知道搜索什么


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

VS编写一个名为
NETCoreApp,Version=v2.0.AssemblyAttributes.cs
的文件。如果您构建了多个.net核心项目,则该文件会被另一个项目更改,而您的VS会认为旧项目已被修改并构建它

进入项目以减少构建:

<PropertyGroup>
    <TargetFrameworkMonikerAssemblyAttributesFileClean>False</TargetFrameworkMonikerAssemblyAttributesFileClean>
    <TargetFrameworkMonikerAssemblyAttributesPath>$(MSBuildThisFileDirectory)SharedAssemblyAttributes.cs</TargetFrameworkMonikerAssemblyAttributesPath>
</PropertyGroup>

假的
$(MSBuildThisFileDirectory)SharedAssemblyAttribute.cs
我正在寻找一种方法让VS/编译器告诉我。(适用于VS2019)

很难重现同一个问题,所以我不确定您的问题的原因。但至于您要问的是如何在输出窗口中查找最新的相关信息,也许您可以检查.net core的
up to Data Checks选项

Go Tools=>Options=>Projects and Solutions=>.net core=>直至数据检查。确保已选中
,如果项目看起来是最新的
,则不要调用MSBuild。然后将
日志记录级别
更改为
Info或Verbose
(根据需要选择合适的级别)

对于.NETFramework项目或C++项目,在代码>构建和运行中输出WebStudio< <代码>将有很大帮助。但是,当试图找出VS考虑代码< >代码> .NET核心或.NET标准项目过时的原因时,我认为我们可以尝试这个选项,因为它的输出更加清晰。

例如:(一个.net核心项目,它依赖于具有
信息级别的标准项目
.net核心最新检查):


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

在VS2019中,控制日志记录的选项是:

默认值为“None”,但老实说,“Minimal”通常是一个很好的设置。当设置为该级别时,每个项目仅输出一行,并且仅当该项目不是最新的时。这一行将准确解释为什么该项目被认为过时


值得记住的是,这是VisualStudio的最新检查,它使用该检查快速评估项目状态并避免对MSBuild进行相对昂贵的调用。对于外来的项目配置,VS可能会确定您的项目需要构建,但MSBuild不会实际构建。这很少见,但如果您正在调试此处的问题,则值得了解。

无需将详细信息设置为“诊断”,而是将其设置为“详细”,以查找过期的资源。您好,Em0,是否有此问题的更新?你有没有检查过这些选项是否可以解决意外的重建:)嗨@LanceLi MSFT,从那以后我再也没有遇到过这样的问题。将在不可避免地发生(或类似情况)时更新此内容。当然,我们将对其进行存档。任何更新都可以在这里分享。谢谢,这看起来正是我想要的。我现在无法重新编写原始问题,但它发生在另一个项目中,设置Log-Level=INFO时发现它将一些文件设置为“始终复制”。当原来的问题再次出现时,我会再试一次。@EM0很高兴知道这有一些帮助:)这个答案帮助我在VS2019中找到SDK风格的项目->最新检查。谢谢