Каковы отношения между Visual Studio, MSBuild и CSC? - PullRequest
0 голосов
/ 09 июля 2019

Я хочу получить общую картину, каковы отношения между Visual Studio , MSBuild и CSC ?

Я не хочу понимать все аспекты каждого из них. Но в целом картина хорошая.

Две важные вещи:

  • Ответственность каждого из них
  • Отношения между каждым из них

1 Ответ

3 голосов
/ 09 июля 2019

Ответственность каждого из них:

CSC.exe - это компилятор C #, который может компилировать ваш код C # и создавать исполняемые (.exe) файлы, динамическиебиблиотеки ссылок (.dll) или модули кода (.netmodule).

MSBuild - это Microsoft Build Engine, который можно использовать для создания проектов и решений из VisualСтудия.Кроме того, даже если я написал несколько файлов .cs и пользовательский файл проекта (.xxproj) для их структурирования, мы можем использовать msbuild.exe для их создания с помощью команды, подобной msbuild xxx.xxproj.См. этот документ .

Visual Studio - это программный пакет, объединяющий основные инструменты, необходимые для написания и тестирования программного обеспечения.

Отношениямежду каждым из них:

  1. Если у меня есть только несколько файлов .cs и я хочу скомпилировать их для вывода .exe и чего, то csc.exe достаточно. Используйте его в командной строке (by cmd.exe or other things) для компиляции кода.

  2. Если я создаю файл проекта (.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.

  3. И хотя 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.

Надеюсь, это поможет, и если я что-то неправильно понял в том, что я написал выше, не стесняйтесь связаться со мной, чтобы исправить это:)

...