Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

707
Views
¿Cuál es la diferencia entre usar dotnet y MsBuild para crear aplicaciones .NET?

Tuve que hacer algunas compilaciones sin usar Visual Studio por primera vez, y claramente hay una brecha en mi conocimiento sobre MsBuild y el proceso de compilación.

Entonces, ¿cuáles son las diferencias entre los dos procesos de compilación a continuación?


Opción 1:

 dotnet build C:\Dev\trunk\Mvc.sln

Esta opción usa "Build Engine versión 16.8.3+39993bd9d para .NET". Supongo que esto significa que de esta manera se puede usar para .NET Core, ya que no hace referencia a "Framework".


Opcion 2:

 msbuild C:\Dev\trunk\Mvc.sln

Esta opción usa "Build Engine versión 16.8.2+25e4d540b para .NET Framework".


Supuse que el comando "dotnet build" era solo una forma abreviada de usar MsBuild. Sin embargo, el registro proporcionado por ambos es bastante diferente y ambos producen resultados diferentes.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Roslyn, la plataforma de compilación de C#, es una biblioteca .NET Standard 2.0, lo que significa que puede ejecutarse tanto en .NET Framework 4.6.1+ como en .NET Core 2.0+ (1) .

Visual Studio, que incluye MSBuild, se ejecuta en .NET Framework. Cuando crea un proyecto con Visual Studio (o directamente con MSBuild), ejecuta Roslyn en .NET Framework. Visual Studio sabe cómo procesar csprojs de estilo SDK y csprojs heredados que no son de estilo SDK e invocar a Roslyn en consecuencia. La versión de Roslyn que se usa está vinculada a la versión de Visual Studio.

dotnet build es una herramienta separada y es una aplicación .NET Core. Solo sabe cómo compilar csprojs de estilo SDK y lo hace ejecutando Roslyn en .NET Core. Roslyn se distribuye con los SDK de .NET Core y dotnet build carga a Roslyn desde una de estas versiones de SDK instaladas (normalmente la última).

Estas dos formas de crear un proyecto de C# son más o menos equivalentes e invocan el mismo código de compilación. Sin embargo, difieren en cuanto a dónde pueden ejecutarse (Visual Studio es .NET Framework y solo para Windows, dotnet build es .NET Core y puede ejecutarse en varias plataformas) y si pueden compilar csprojs heredados que no sean de estilo SDK. dotnet build también es un poco más agradable de usar desde la línea de comandos.

Tenga en cuenta que el tiempo de ejecución en el que se carga Roslyn no tiene relación con la IL compilada que Roslyn puede emitir: Roslyn que se ejecuta en .NET Framework puede emitir IL que ejecuta .NET Core sin problemas, y viceversa.

Si está utilizando analizadores que apuntan a .NET Core (poco probable, ya que se recomienda que los analizadores apunten a .NET Standard 2.0), estos solo se ejecutarán desde dotnet build .


(1) Estoy usando ".NET Core" para referirme tanto a .NET Core como a .NET 5+.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!