← Все вопросы

Как скомпилировать C# через csc и чем он отличается от dotnet build?

Задан 2 месяца назад823 просмотров2 ответа
6

Видел, что C# можно компилировать командой csc. Что это за компилятор, как им пользоваться из консоли и почему все вокруг используют dotnet build вместо него?

2 ответа

11
✓ Принятый ответ — помог автору

csc (C# Compiler, кодовое имя Roslyn) — это и есть компилятор C#. Именно он превращает .cs в сборку с CIL. Минимальный пример:

csc Program.cs

На выходе получите Program.exe. Можно указать имя и тип вывода:

csc /out:app.exe /target:exe Program.cs

Почему чаще используют dotnet build: csc компилирует отдельные файлы, но в реальном проекте есть NuGet-зависимости, ссылки на другие проекты, целевые фреймворки, конфигурации Debug/Release. Всем этим управляет MSBuild через файл .csproj. Команда dotnet build под капотом вызывает тот же csc, но сначала восстанавливает пакеты и собирает весь граф проекта:

dotnet build
dotnet run    # собрать и сразу запустить

Итого: csc — это «голый» компилятор для одного-двух файлов или учебных примеров. Для любого настоящего проекта используйте dotnet build / dotnet run, а csc они вызовут за вас.

3

Маленькая ремарка: чтобы вообще иметь csc под рукой в чистом виде, обычно нужен установленный .NET SDK (там лежит Roslyn). На практике 99% времени вы будете жить в dotnet-командах, а голый csc понадобится разве что для эксперимента «скомпилировать один файл без проекта».

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект