Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 55049|Ответ: 0

[Источник] Разница между компилятором Roslyn MSBuild

[Скопировать ссылку]
Опубликовано 21.03.2021 11:55:39 | | | |
MSBuild: Microsoft Build Engine — это платформа для создания приложений. Этот движок, также известный как MSBuild, предоставляет XML-схему для файлов проектов, контролирующую, как платформа сборки обрабатывает и создаёт программное обеспечение. Visual Studio использует MSBuild, но MSBuild не зависит от Visual Studio. Вызывая msbuild.exe в проектном или файле решения, вы можете планировать и создавать продукты в среде без установленного Visual Studio.

Представлять:Вход по гиперссылке виден.

Барабана много сказал, что видно по названию, он является компилятором Microsoft, то есть программирует проекты в исполняемые программы и так далее.

Ранее использовалось изменение кода с помощью блокнота txt, затем перекомпиляция с помощью msbuild, следующим образом:

Отладка .NET-программ с помощью блокнота дома на компьютере в течение десяти лет
https://www.itsvse.com/thread-9419-1-1.html

Рослинявляется открытым компилятором .NET от корпорации Microsoft. Компилятор поддерживает компиляцию кода на C# и Visual Basic, а также предоставляет богатые API для анализа кода.
Мы пытаемся создать новую.NET фреймворк 4.6проект, использующий VS 2019, генерирует параметр MSBuild Project Generate Output Detail нормально, как показано на изображении ниже:



Кликните правой кнопкой мыши по элементу, чтобы попытаться регенерировать, как показано ниже:



1>------ Все пересборки инициированы: Проект: ConsoleApp1, Конфигурация: Отладка Любой процессор ------
1> Время начала — 2021/3/21, 11:38:08.
1>GenerateBindingRedirects:
1> В ResolveAssemblyReferences нет предложенных обязательных перенаправления.
1>GenerateTargetFrameworkMonikerAttribute:
1> пропускает целевой «GenerateTargetFrameworkMonikerAttribute», потому что все выходные файлы обновлены относительно входных файлов.
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 Свойства\AssemblyInfo.cs "obj\Debug\. NETFramework,Version=v4.6.AssemblyAttributes.cs»
1> Используйте совместную компиляцию для компиляторов из каталога задних столбцов: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
1>_CopyAppConfigFile:
1> Копирование файлов из "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config" в "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.exe.config"。
1>CopyFilesToOutputDirectory:
1> Копирование файлов из "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe" в "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> Копирование файлов из "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb" в "C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ ConsoleApp1.pdb"。
1>
1> успешно сгенерирован.
1> 0 предупреждений
1> 0 ошибок
1>
1> Прошедшее время 00:00:00.66
========== Регенерировать все: 1 успешно, 0 провал, 0 ========== пропущено

Скачано из других статей в интернете, только для справки:


Встроенный MSBuild .NET Framework 4.0 не распознаёт особенности синтаксиса C# 6.0.

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

MSbuild — это система сборки Visual Studio. Он вызывает компилятор C# для компиляции проекта на C#. Roslyn — это компилятор на C# (и VB-компилятор). Поэтому msbuild использует Roslyn.

Однако в Roslyn есть не только компилятор. Также есть плагин VS, который предоставляет функции IDE (списки завершения, цвета, исправления кода и т.д.).

Кроме того, Roslyn — это API для анализа исходного кода, который вы можете использовать в своих приложениях. В последнем случае существует API MSBuildWorkspace, который можно использовать для открытия проекта или решения для анализа. Это рабочее пространство использует MSBuild для изучения всех частей проекта и решения. Поэтому эта часть Roslin использует MSBuild.


Сводка:

Насколько я понимаю, MSBuild — это сборник компиляторов Microsoft, и он, возможно, не отвечает за компиляцию генерации, но поможет нам вызвать Roslyn для компиляции c#-кода. Он также может компилировать код на других языках и затем вызывать соответствующие компиляторы.

Для компиляции проектов на C# MSBuild принимает решения, а Рослин — исполнитель.





Предыдущий:ASP.NET Core (VI) DI вручную получает метод введения объектов
Следующий:.NET/C# Emit динамически генерирует сборки
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com