为什么"dotnet msbuild"在第一次运行时会失败并显示警告,然后在第二次成功运行?



我正在加入一个新的工作团队,以前从未使用过 .NET,但我遇到了一个我什至不知道如何开始诊断的问题。

基本上,我需要构建项目,我在VisualStudio Code终端上使用以下命令来执行此操作:

dotnet msbuild -restore -target:build -p:VisualStudioVersion=16

在第一次运行时,编译器抱怨错误如下:

  • 尾随逗号
  • 右大括号前面有空行
  • 类型名称冲突
  • 文本字符串作为参数
  • 类拥有可支配字段,但字段类型实际上不是一次性的

此时我没有尝试运行应用程序,因为我想先解决警告。

我再次运行命令(dotnet msbuild -restore -target:build -p:VisualStudioVersion=16),它进行了编译,没有产生任何警告。

任何对 .NET 有更多了解的人都能给我一些关于为什么会发生这种情况的见解吗?

为什么dotnet msbuild第一次运行时会失败并显示警告,然后在第二次成功运行?

根本的问题是,你把情况描述为与实际情况相反的情况。 MSBuild并没有"失败并发出警告"。它成功了,但发出了警告。该项目已成功构建,因此成功了。

一旦你对工具如何工作的心理模型是正确的,诊断问题就会容易得多。

我再次运行该命令,它在没有产生任何警告的情况下进行了编译。

不,它没有再次进行编译。相反,它什么也没做。 构建一个已经成功构建的项目没有任何作用;项目已生成。

你说你想要它建成,它已经建成了,所以我们完成了。MSBuild 应该足够聪明,不会重做已经完成的工作;它并不完美,但它做得很好,不会浪费你的时间重做工作。

如果要强制项目从头开始重建,包括执行所有分析,通常使用

/target:Rebuild

/target:Build

如果要在不进行重新生成的情况下将项目恢复到预生成状态,通常可以

/target:Clean

遇到了一个问题,我什至不知道如何开始诊断。

那么今天将是阅读项目文件并了解其工作原理以及阅读 msbuild 文档的好日子:

https://learn.microsoft.com/en-us/visualstudio/msbuild/walkthrough-using-msbuild?view=vs-2019

现在您知道如何开始诊断它:在使用该工具之前,请阅读项目文件和工具文档

相关内容

最新更新