Недавно я заметил, что при компиляции исполняемого файла C # на основе консоли в MCS и CSC получающиеся в результате файлы .EXE имеют меньший размер, чем если бы я создал проект консольного приложения Visual Studio (.NET Framework) и скомпилировал его тогда.Я использую Visual Studio 2017, Mono 5.18.0.240, MCS 5.18.0.0, CSC 2.8.2.62916 (2ad4aabc) и .NET Framework 4.7.1.Мой вопрос касается того, ПОЧЕМУ приложения Visual Studio больше, а не КАК сделать их меньше.
Используя приведенный ниже код:
MCS и CSC оба дают EXE-файл ~ 3 КБ,Консольное приложение Visual Studio (.NET Framework) дает EXE-файл размером ~ 5 КБ.
Hello_World.cs
using System;
class SomeClass {
static void Main(string[] args) {
Console.WriteLine("Hello World");
}
}
Теоретически MCS / CSC не долженФайлы .EXE и консольные приложения Visual Studio (.NET Framework) имеют одинаковый размер?Я где-то слышал, что Microsoft использует Roslyn в качестве компилятора Visual Studio C #, но тогда какой смысл CSC?Зачем разрабатывать другой компилятор C #?