Мне интересно, возможно ли изменить точку входа консольного приложения .NET с Main
на Main2
метод в приведенном ниже примере:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main");
}
//desired entry point
static void Main2(string[] args)
{
Console.WriteLine("Main2");
}
}
Я исследовал код IL этих двух,Вот метод Main
:
.method private hidebysig static void
Main(
string[] args
) cil managed
{
.entrypoint
.maxstack 8
// other instructions
} // end of method Program::Main
И метод Main2
:
.method private hidebysig static void
Main2(
string[] args
) cil managed
{
.maxstack 8
//other instructions
} // end of method Program::Main2
Единственное отличие - это прецедент инструкции .entrypoint
в методе Main
,который, насколько я понимаю, обнаруживается CLR при запуске приложения.
Есть ли способ повлиять на csc
, чтобы пометить другой метод с помощью этой инструкции?Могут ли другие компиляторы добиться цели?
РЕДАКТИРОВАТЬ Мой вопрос отличается от этого , потому что я спрашиваю о csc
поведении компилятора (и других компиляторов) ... в частности, как поставить.entrypoint
инструкция в другом месте