Eu sei que no mundo dos desenvolvedores da Microsoft o MSBuild ainda está por trás de tudo. Mas como pode ser que, em um Terminal Windows, os comandos dotnet build -h
e dotnet build -help
gerem resultados diferentes? A primeira versão com -h
as alternativas -?
e --help
, ao escrever, -help
mostra ajuda e opções totalmente diferentes:
PS C:\> dotnet build -h
Description:
.NET-Generator
Nutzung:
dotnet build [<PROJECT | SOLUTION>...] [options]
Argumente:
<PROJECT | SOLUTION> Das Projekt oder die Projektmappendatei, die verwendet werden soll. Wenn keine Datei angegeben ist, durchsucht der Befehl das aktuelle Verzeichnis nach einer Datei.
Optionen:
--ucr, --use-current-runtime Verwenden Sie die aktuelle Runtime als Zielruntime.
...
contra:
PS C:\> dotnet build -help
Syntax: MSBuild.exe [Optionen] [Projektdatei | Verzeichnis]
Beschreibung: ....
Optionen: Beachten Sie, dass Sie Optionen über
"-option", "/option" und "--option" angeben können.
...
Como posso saber qual conjunto de ferramentas e versão o comando dotnet build
usa quando escrevo dotnet build mysolution.sln
, o que parece adequado para ambas as variantes? Onde estão as diferenças e qual sistema de compilação o Visual Studio 2022 usa (ou como posso descobrir)? E, em seguida, como posso ter certeza de que as mesmas ferramentas estão sendo usadas no servidor de compilação?
O
dotnet
utilitário é multiplataforma e contém uma variedade de ferramentas para desenvolvimento .NET que são usadas por meio de subcomandos.Relevante para a pergunta,
dotnet
contém sua própria cópia incorporada demsbuild
. Há umdotnet msbuild
subcomando e os subcomandosdotnet build
edotnet clean
também são MSBuild. Os subcomandos que usam MSBuild aceitam opções de linha de comando do MSBuild.-?
,-h
, e--help
são opções reconhecidas pelodotnet
utilitário.-help
não é uma opção reconhecida pelo MSBuilddotnet
e é passada para o MSBuild interno.-help
é uma opção reconhecidamsbuild
. Você pode ver isso na saída do comando relatada na pergunta.dotnet build -h
relatóriose
dotnet build -help
relatóriosObserve que, embora você tenha executado o
dotnet
comando, a-help
sintaxe dizMSBuild.exe
.Use
dotnet --version
para obter a versão do SDK do .NET.Use
dotnet msbuild --version
para obter a versão do MSBuild incorporado.Para obter a versão do host
dotnet
e os SDKs e tempos de execução disponíveis, usedotnet --info
.Se uma edição do Visual Studio estiver instalada, haverá uma cópia independente do MSBuild disponível. Você estaria certo se achasse que ela
msbuild --version
forneceria a versão.