【问题标题】:My VS project keeps getting rebuilt using msbuild我的 VS 项目不断使用 msbuild 重建
【发布时间】:2019-09-16 06:47:21
【问题描述】:

最新:

这绝对是 msbuild 中的一个错误。除此之外不能有任何其他解释。这只能在 Linux 上发生,或者可能在更广泛的范围内发生。

所以我决定只构建一个项目,在解决方案中完全不依赖其他项目。

查看捕获的诊断信息,我发现这些行很有希望:

 Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files.
                   Input files: Annotations.cs;Auth.cs;AuthorizationConfig.cs;Backend.cs;Billing.cs;Code.cs;...
                   Output files: .obj/TheAgent.dll;.obj/TheAgent.pdb
                   Set Property: NoWarn=;1701;1702
15:23:27.396     1>Done building target "CoreCompile" in project "TheAgent.csproj".: (TargetId:40)

看起来我的 dll 和我的 pdb 没有按照我的预期构建。 但是,必须在导致时间戳更改之前或之后发生某些事情(是这个构建时间而不是最后一个构建时间)。

dll 的时间戳在中间对象文件夹 (.obj/) 和输出文件夹中都会更新。

有没有一种已知的方法可以在 msbuildCoreCompile 任务之后立即停止它?

更新:

这次我决定搜索is newer 并找到了这些实例。我不知道他们是如何获得解决方案/项目文件的:

Input file ".obj/Common.csproj.CoreCompileInputs.cache" is newer than output file ".obj/Common.pdb".

除此之外,我还遇到了这个: https://github.com/dotnet/project-system/issues/4736

认为这是问题所在,我升级到 dotnet sdk 版本 2.2.402。 最终结果还是一样的:(

原文:

我需要一些关于如何解决此问题的指示。我正在使用 /t:build 构建解决方案文件。 生成的可执行文件每次都会不断刷新。

首先我认为package restore 是造成这种情况的原因。我已经删除了该步骤,但它没有任何区别。

然后我看了这个: https://oz-code.com/blog/visual-studio-keeps-rebuilding-projects-no-good-reason/

我基本上是在诊断输出中寻找一些文本,它告诉我目标或文件是否已过时并且需要重建。上面的链接谈到“项目'B'不是最新的”。我的 msbuild 输出中没有 not up to date

我已经有两个使用 CopyAlways 的资源,我将其更改为 CopyIfNewer。

上面的文章还谈到了循环依赖。我正在手动检查所有内容。是的,对依赖项目的引用实际上是对项目输出(dll 的/exe)的引用。因此,仅通过检查该模式来寻找循环依赖似乎有点奇怪。

【问题讨论】:

  • 你有Minimal, Reproducible Example吗?否则,如果不知道您的设置,就无法回答这个问题。
  • 不,我没有。而且我不会走那条路。尝试重建现有事物所付出的努力很可能比找出错误所需的努力更大
  • 也许herehere 的一些建议会有所帮助。如果我没记错的话,使用“总是复制”复制到输出目录的文件是有问题的,它可以帮助使用“如果更新则复制”。
  • 好建议。我已经尝试过适用于我的案例的那些。 msbuild是破期。我已将问题简化为一个独立项目,但它失败了。我在主帖中有一个指向 github 问题的链接

标签: msbuild


【解决方案1】:

dotnet 平台和/或 msbuild 中还有一个问题导致此操作失败。 其中之一就是https://github.com/dotnet/project-system/issues/4736

安装 SDK 3.0.100-preview7-012821 或更好的解决问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2011-05-18
    • 2011-12-05
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多