Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

241
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda