我想知道是否有可能将下面示例中 .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
方法:
我调查了这两个的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
唯一的区别是
Main
方法中存在.entrypoint
指令,据我所知,当应用程序启动时,CLR会检测到这一点。有没有办法影响
csc
以标记其他方法?其他编译器能否做到这一点?
编辑
我的问题与这个问题不同,因为我询问编译器(和其他编译器)的行为...具体如何将.entrypoint
指令放在其他位置。
Main2
而不是Main
的目的是什么?目前这感觉像一个XY问题。 - Jon Skeet