Раньше я думал, что сборка может иметь только один метод main (), пока не увидел MiscUtil Джона Скита в видео лекции, которую он прочитал в офисе Microsoft в Копенгагене.
Итак, я написал это маленькое приложение, в котором было два метода main (), например:
namespace ManyMains
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
Console.ReadKey();
}
}
class YetAnotherProgram
{
static void Main()
{
Console.WriteLine("Yet another program.");
Console.ReadKey();
}
}
}
Я установил объект автозагрузки в Visual Studio, и он работал. Хорошо, нет причин для беспокойства. Затем я хотел посмотреть, где именно эта информация хранится в сборке, поэтому я открыл скомпилированный двоичный файл в рефлекторе и не увидел абсолютно никаких метаданных на этот счет.
Мне интересно, записана ли такая информация в манифест или какой-либо COFF-заголовок PE-образа, который нельзя увидеть в дизассемблере, но можно увидеть в шестнадцатеричном редакторе?