MSBuild: Microsoft Build Engine — это платформа для создания приложений. Этот движок, также известный как MSBuild, предоставляет XML-схему для файлов проектов, контролирующую, как платформа сборки обрабатывает и создаёт программное обеспечение. Visual Studio использует MSBuild, но MSBuild не зависит от Visual Studio. Вызывая msbuild.exe в проектном или файле решения, вы можете планировать и создавать продукты в среде без установленного Visual Studio.
Представлять:Вход по гиперссылке виден.
Барабана много сказал, что видно по названию, он является компилятором Microsoft, то есть программирует проекты в исполняемые программы и так далее.
Ранее использовалось изменение кода с помощью блокнота txt, затем перекомпиляция с помощью msbuild, следующим образом:
Рослинявляется открытым компилятором .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 принимает решения, а Рослин — исполнитель.
|