Ответственность каждого из них:
CSC.exe - это компилятор C #, который может компилировать ваш код C # и создавать исполняемые (.exe) файлы, динамическиебиблиотеки ссылок (.dll) или модули кода (.netmodule).
MSBuild - это Microsoft Build Engine, который можно использовать для создания проектов и решений из VisualСтудия.Кроме того, даже если я написал несколько файлов .cs и пользовательский файл проекта (.xxproj) для их структурирования, мы можем использовать msbuild.exe для их создания с помощью команды, подобной msbuild xxx.xxproj
.См. этот документ .
Visual Studio - это программный пакет, объединяющий основные инструменты, необходимые для написания и тестирования программного обеспечения.
Отношениямежду каждым из них:
Если у меня есть только несколько файлов .cs и я хочу скомпилировать их для вывода .exe и чего, то csc.exe достаточно. Используйте его в командной строке (by cmd.exe or other things
) для компиляции кода.
Если я создаю файл проекта (.xxproj) для лучшего контроля над ресурсами,файлы .cs и другие файлы, я могу использовать msbuild в командной строке , чтобы построить их для вывода .exe или что-то еще.И один момент, который мы должны знать, это то, что msbuild.exe может не только создавать код на C #, но и VB.net, C++, F#
... Когда я использую msbuild для сборки кода на C # с помощью такой команды, как msbuild xx.csproj
, он будет call csc.exe to compile C# code and pass parameters read from the .csproj file to it
.
И хотя msbuild - это система сборки в Visual Studio, она не зависит от Visual Studio.Таким образом, вы можете установить отдельный пакет Build Tools для VS2019 .
Поэтому я думаю, что msbuild
вызывает csc.exe
при сборке проектов C #.И Visual Studio uses MSBuild as its build engine
, поэтому он всегда будет вызывать msbuild
, когда building projects and solutions in Visual Studio
.
А поскольку MSBuild является отдельным пакетом начиная с VS2015 (не уверен насчет времени), мы также можем установить бесплатную Build Tools package which contains msbuild.exe
для создания проектов и решений вне VS IDE.
(Начиная с VS2017 и выше, для более ранних версий VS, таких как VS2010, VS2012, Visual Studio вызывает msbuild API для создания проектов вместо вызова процесса msbuild.exe)
Кроме того: вы можете получитькартинка здесь , которая описывает отношения для более ранних версий VS.Но я думаю, что ситуация изменилась, поскольку в более ранних версиях я уверен, что VS build вызывает msbuild API вместо msbuild.exe, но, по крайней мере, для VS2017, при создании проекта C # очевидно, что он вызывает msbuild.exe как отдельный процесс.когда вы отслеживаете процесс сборки с помощью task manager
.
Надеюсь, это поможет, и если я что-то неправильно понял в том, что я написал выше, не стесняйтесь связаться со мной, чтобы исправить это:)