Monodevelop

Материал из ALT Linux Wiki

Компилятор, используемый monodevelop

monodevelop запускает некий MSBuildBuilder (поставляется с ним вместе), который постоянно висит в памяти и, как я подозреваю, занимается сборкой. Судя по тому, что во время сборки запускается только /usr/bin/mono-sgen /usr/lib/mono/4.5/csc.exe, я делаю вывод, что он сам берёт на себя роль msbuild, не вызывая его явно.

Упомянутый csc.exe это

$ /usr/bin/mono-sgen /usr/lib/mono/4.5/csc.exe --help
Microsoft (R) Visual C# Compiler version 2.8.2.62916 (2ad4aabc)
Copyright (C) Microsoft Corporation. All rights reserved.

В то время как mcs это

$ mcs --help
Turbo C# compiler, Copyright 2001-2011 Novell, Inc., 2011-2016 Xamarin, Inc, 2016-2017 Microsoft Corp

Как я понимаю, mcs это оригинальный компилятор проекта Mono и он не используется для современных проектов. А csc.exe это компилятор Roslyn из проекта .NET Core, адаптированный для Mono в рамках сливания всех реализаций Mono в одну.

Получается, что сборка через monodevelop и msbuild в консоли равнозначна, поскольку msbuild также вызывает csc.exe для сборки, обрабатывая файл .csproj.

msbuild сам подхватит файл, и .sln и .csproj, смотря в каком каталоге проекта запустить.

Если нужно явно управлять типом сборки, Debug или Release:

$ msbuild /p:Configuration=Release

Сборка с восстановлением модулей nuget:

$ msbuild /restore:True /p:Configuration=Release