Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 55049|Resposta: 0

[Fonte] A diferença entre o compilador Roslyn MSBuild

[Copiar link]
Publicado em 21/03/2021 11:55:39 | | | |
MSBuild: O Microsoft Build Engine é uma plataforma para construir aplicações. Esse motor, também conhecido como MSBuild, fornece um esquema XML para arquivos de projeto que controla como a plataforma de compilação lida e constrói softwares. O Visual Studio usa o MSBuild, mas o MSBuild não depende do Visual Studio. Ao chamar msbuild.exe em um projeto ou arquivo de solução, você pode agendar e construir produtos em um ambiente sem o Visual Studio instalado.

Apresentar:O login do hiperlink está visível.

Barabala disse muito, como pode ser visto pelo nome, ele é o compilador da Microsoft, ou seja, programando projetos em programas executáveis, etc.

Usado antes, modificar o código usando o bloco de notas txt, recompilar com msbuild, da seguinte forma:

Depurando programas .NET com o Bloco de Notas em casa em um computador por dez anos
https://www.itsvse.com/thread-9419-1-1.html

Roslyné um compilador .NET de código aberto da Microsoft Corporation. O compilador suporta compilação de código em C# e Visual Basic e oferece APIs avançadas de análise de código.
Tentamos criar um novo.NET framework 4.6O projeto, usando VS 2019, gerará normalmente a configuração MSBuild Project Generate Output Detail, conforme mostrado na imagem abaixo:



Clique com o botão direito no item para tentar regenerar, como mostrado abaixo:



1>------ Todas as reconstruções foram iniciadas: Projeto: ConsoleApp1, Configuração: Depurar qualquer CPU ------
1> O horário de início é 2021/3/21 11:38:08.
1>GenerateBindingRedireciona:
1> Não há redirecionamentos de vinculação sugeridos no ResolveAssemblyReferences.
1>ImagemImagemBaseTargetBaseGenerar:
1> é pular o alvo "GenerateTargetFrameworkMonikerAttribute" porque todos os arquivos de saída estão atualizados em relação aos arquivos 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 Properties\AssemblyInfo.cs "obj\Debug\. NETFramework, Version=v4.6.AssemblyAttributes.cs"
1> Use compilação compartilhada para compiladores a partir do diretório da coluna de trás: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
1>_CopyAppConfigFile:
1> Copiar arquivos de "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config" para "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe.config"。
1>CopyFilesToOutputDirectory:
1> Copiar arquivos de "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe" para "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 arquivos de "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb" para "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.pdb"。
1>
1> foi gerado com sucesso.
1> 0 avisos
1> 0 erros
1>
1> Tempo Decorrido 00:00:00.66
========== Regenerar todos: 1 tem sucesso, 0 falha e 0 ========== pulado

Baixado de outros artigos na Internet, apenas para referência:


O MSBuild embutido do .NET Framework 4.0 não reconhece recursos da sintaxe C# 6.0.

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

MSbuild é o sistema de build do Visual Studio. Ele chama o compilador C# para compilar o projeto C#. Roslyn é um compilador C# (e compilador VB). Portanto, o msbuild usa Roslyn.

No entanto, Roslyn contém mais do que apenas um compilador. Também inclui um plugin VS que oferece recursos do IDE (listas de completação, cores, correções de código, etc.).

Além disso, o Roslyn é uma API para análise do código-fonte, que você pode usar em suas próprias aplicações. No último caso, existe uma API chamada MSBuildWorkspace que pode ser usada para abrir um projeto ou solução para análise. Este espaço de trabalho usa o MSBuild para descobrir todas as partes de um projeto e solução. Portanto, essa parte de Roslin usa MSBuild.


Resumo:

Pelo que entendo, o MSBuild é um conjunto de compiladores da Microsoft, e ele pode não ser responsável por compilar a geração, mas vai nos ajudar a chamar a Roslyn para compilar o código c#. Ele também pode compilar código em outras linguagens e depois chamar outros compiladores correspondentes.

Para compilar projetos em C#, o MSBuild é o tomador de decisão e Roslyn é a executora.





Anterior:ASP.NET Core (VI) DI obtém manualmente o método de injeção de objetos
Próximo:.NET/C# Emit gera montagens dinamicamente
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com