Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 55049|Respuesta: 0

[Fuente] La diferencia entre el compilador Roslyn MSBuild

[Copiar enlace]
Publicado en 21/3/2021 11:55:39 | | | |
MSBuild: El Microsoft Build Engine es una plataforma para crear aplicaciones. Este motor, también conocido como MSBuild, proporciona un esquema XML para archivos de proyecto que controla cómo la plataforma de compilación gestiona y compila el software. Visual Studio usa MSBuild, pero MSBuild no depende de Visual Studio. Al llamar a msbuild.exe en un proyecto o archivo de solución, puedes programar y construir productos en un entorno sin Visual Studio instalado.

Introducir:El inicio de sesión del hipervínculo es visible.

Barabala dijo mucho, como se puede ver por el nombre, es el compilador de Microsoft, es decir, programando proyectos en programas ejecutables, etc.

Usado antes, modifica el código usando el bloc de notas txt, recompila con msbuild, de la siguiente manera:

Depurando programas .NET con el Bloc de notas en casa en un ordenador durante diez años
https://www.itsvse.com/thread-9419-1-1.html

Roslynes un compilador .NET de código abierto de Microsoft Corporation. El compilador soporta compilación de código en C# y Visual Basic y proporciona APIs de análisis de código enriquecidas.
Intentamos crear uno nuevo.NET framework 4.6el proyecto, usando VS 2019, generará normalmente la configuración de Generar Detalle de Salida de MSBuild Proyecto, como se muestra en la imagen de abajo:



Haz clic derecho en el objeto para intentar regenerarlo, como se muestra a continuación:



1>------ Todas las reconstrucciones han sido iniciadas: Proyecto: ConsoleApp1, Configuración: Depurar cualquier CPU ------
1> La hora de salida es 2021/3/21 11:38:08.
1>GenerateBindingRedirecciones:
1> No hay redirecciones de enlace sugeridas en ResolveAssemblyReferences.
1>GenerateTargetFrameworkMonikerAttribute:
1> es saltarse el destino "GenerateTargetFrameworkMonikerAttribute" porque todos los archivos de salida están actualizados en relación con los archivos de entrada.
1>CoreCompile:
1> C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702,2008 /fullpaths /nostdlib+ /platform: anycpu32bitpreferred /errorreport:prompt /warn:4 /define:DEBUG; TRACE /errorendlocation /preferreduilang:zh-CN /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Net.Http.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\ConsoleApp1.exe /subsystemversion:6.00 /target:exe /utf8output / deterministic+ /langversion:7.3 Program.cs Propiedades\AssemblyInfo.cs "obj\Debug\. NETFramework, Version=v4.6.AssemblyAttributes.cs"
1> Utilizar compilación compartida para compiladores desde el directorio de la columna trasera: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
1>_CopyAppConfigFile:
1> Copiar archivos desde "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config" a "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe.config"。
1>CopyFilesToOutputDirectory:
1> Copiar archivos desde "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe" a "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe"。
1> ConsoleApp1 -> C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ConsoleApp1.exe
1> Copiar archivos de "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb" a "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.pdb"。
1>
1> se ha generado con éxito.
1> 0 advertencias
1> 0 errores
1>
1> Tiempo transcurrido 00:00:00.66
========== Regenera todo: 1 tiene éxito, 0 falla y 0 ========== se omite

Descargado de otros artículos en Internet, solo para referencia:


El MSBuild integrado de .NET Framework 4.0 no reconoce las características de sintaxis de C# 6.0.

"MSBuild" => msbuild.exe, "Roslyn" => csc.exe

MSbuild es el sistema de compilación de Visual Studio. Llama al compilador de C# para compilar el proyecto C#. Roslyn es un compilador de C# (y compilador de VB). Por lo tanto, msbuild usa Roslyn.

Sin embargo, Roslyn contiene más que un simple compilador. También incluye un plugin de VS que te ofrece funciones del IDE (listas de finalización, colores, correcciones de código, etc.).

Además, Roslyn es una API para analizar código fuente, que puedes usar en tus propias aplicaciones. En este último caso, existe una API llamada MSBuildWorkspace que puede usarse para abrir un proyecto o solución para su análisis. Este espacio de trabajo utiliza MSBuild para conocer todas las partes de un proyecto y solución. Por lo tanto, esta parte de Roslin utiliza MSBuild.


Resumen:

Según tengo entendido, MSBuild es un conjunto de compiladores de Microsoft, y puede que no sea responsable de compilar la generación, pero nos ayudará a llamar a Roslyn para compilar el código de C#. También puede compilar código en otros lenguajes y luego llamar a otros compiladores correspondientes.

Para compilar proyectos en C#, MSBuild es quien toma la decisión y Roslyn es la albacea.





Anterior:ASP.NET Core (VI) DI obtiene manualmente el método de inyectar objetos
Próximo:.NET/C# Emit genera ensamblajes dinámicamente
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com