You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将程序入口点(如C#的Main方法)设置在库程序集中?

在C#中让类库的Main方法作为程序入口点

能不能做到?

完全可以,和WinForms/WPF的机制本质一样——这类框架项目的入口点并非写在EXE里,而是通过配置指向类库中的逻辑,我们自己也能实现这种效果,不用在EXE里写Main再转发调用。

具体怎么做

1. 修改EXE项目的配置

打开EXE项目的.csproj文件,添加以下配置段,将YourLibraryNamespace.Program替换为你类库中包含Main方法的完整类型名称:

<PropertyGroup>
  <StartupObject>YourLibraryNamespace.Program</StartupObject>
</PropertyGroup>

同时确保EXE项目已正确引用包含Main方法的.NET Standard类库。

2. 类库中的Main方法需符合要求

类库中的Main方法必须满足.NET入口点的标准签名,示例如下:

namespace YourLibraryNamespace
{
    public static class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("从类库的Main方法启动程序!");
            // 这里编写你的业务逻辑
        }
    }
}

注意:.NET Standard库本身无法直接作为可执行文件运行,但EXE项目可以通过配置将它的Main方法指定为自身的入口点。

原理说明

WinForms/WPF项目之所以能实现类似效果,是因为它们的模板会自动生成包含入口点的代码,但本质上也是通过项目配置指定了入口类型。我们手动添加StartupObject配置,就是直接告诉编译器:不用在EXE项目里找Main方法,直接用类库中指定类型的Main作为EXE的入口点。

注意事项

  • 类库中的Main方法必须是public static修饰的,签名要么带string[] args参数,要么无参数,符合.NET对入口方法的要求。
  • 如果类库中存在多个符合条件的入口方法,必须通过StartupObject明确指定要使用的类型,否则编译会出现歧义报错。

内容的提问来源于stack exchange,提问作者ctinarelli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:09:25