我的VS项目不断使用msbuild

时间:2019-09-13 17:56:16

标签: msbuild

最新:

这绝对是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/)和输出文件夹中都进行了更新。

是否有已知的方法可以在msbuild任务结束后立即停止CoreCompile

更新:

这次我决定搜索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的引用)的引用。因此,仅通过检查模式来查找循环依赖项似乎有些奇怪。

1 个答案:

答案 0 :(得分:0)

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

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