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

pic*_*kle 1 c# ubuntu-18.04 .net-core-2.2

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

基本上,我需要构建项目,并且在VisualStudio Code终端上使用以下命令来进行构建:

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

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

  • 尾随逗号
  • 右花括号前
  • 类型名称冲突
  • 文字字符串作为参数
  • 拥有可使用字段的类,但字段类型实际上不是可使用的

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

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

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

Eri*_*ert 6

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

根本问题是您将情况描述为实际情况相反。的MSBuild并没有 “失败,并警告”。它成功地与警告。该项目已成功构建,因此成功。

一旦您对工具如何工作的心智模型正确,诊断问题将变得更加容易。

我再次运行该命令,它没有产生任何警告就进行了编译。

不,它没有再次编译。相反,它什么也没做。构建已经成功构建的项目无济于事。该项目已经建立。

您说要构建它,它已经构建了,所以我们完成了。MSBuild应该足够聪明,不会重做已经完成的工作。它不是完美的,但是在不浪费时间重新做工作方面做得很好。

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

/target:Rebuild
Run Code Online (Sandbox Code Playgroud)

/target:Build
Run Code Online (Sandbox Code Playgroud)

如果您希望不进行重新构建就将项目恢复为预先构建的状态,则通常需要执行

/target:Clean
Run Code Online (Sandbox Code Playgroud)

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

那么今天将是度过美好的一天,阅读您的项目文件并学习其工作原理,并阅读msbuild文档的方法:

https://docs.microsoft.com/zh-cn/visualstudio/msbuild/walkthrough-using-msbuild?view=vs-2019

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