MSBuild против компилятора

В чем разница между использованием MSBuild и компилятором С# из командной строки? Я хочу вручную создавать свои решения/проекты без использования Visual Studio, и я хочу узнать, как использовать инструменты командной строки.

Ответ 1

С помощью компилятора С# вы имеете в виду csc.exe?

Если это то, что вы имеете в виду, то csc и MSBuild - совершенно разные приложения.

MSBuild использует файлы решений и проектов для создания файлов в вашем проекте. MSBuild использует csc.exe в качестве своего реального компилятора, но знает, где искать сборки, ссылки и т.д. на основе ваших решений и файлов проекта (эти файлы на самом деле являются файлами xml).

При использовании csc.exe вам необходимо вручную указать пути к вашим файлам, ссылкам и т.д., что значительно затруднит компиляцию.

MSDN MSBuild: http://msdn.microsoft.com/en-us/library/dd393574.aspx

MSDN CSC: http://msdn.microsoft.com/en-us/library/78f4aasd.aspx

Ответ 3

В C# ваш код сначала компилируется в код IL, а затем JIT компилятор компилирует ваш код в инструкции CPU. Поэтому весь компилятор должен скомпилировать ваш код в IL. Итак, что такое msBuild:

Microsoft Build Engine (MSBuild) - это новая платформа для создания Microsoft и Visual Studio. MSBuild полностью прозрачен с рассматривает, как он обрабатывает и создает программное обеспечение, позволяя разработчикам для организации и создания продуктов в средах лабораторных работ, где Visual Studio не установлен

См.:

Visual Studio (sln)

Если ваше решение малое, и вам не нужно делать интересные вещи, вы можете использовать бегун сборки Visual Studio (sln). Он делает то же самое, что и при создании Project- > Build (из меню VS). Этот параметр очень прост в настройке, несколько кликов и ваш сервер CI компилируют ваше решение.

MSBuild

Если вам нужно выполнять более сложные сценарии, помимо простой компиляции, например, применять различные файлы конфигурации, вставлять преобразованные значения в файл конфигурации, устанавливать двоичные файлы и т.д., вы должны выбрать вариант MSBuild. Вы узнаете, когда вам нужно это использовать, просто потому, что sln-строитель не сможет делать что-то. Этот параметр требует некоторых знаний языка сценариев сборки, который основан на задачах и xml-подобных.