【问题标题】:ASP.Net 5 Console Application Entry PointASP.Net 5 控制台应用程序入口点
【发布时间】:2016-01-08 08:09:12
【问题描述】:

我一直在尝试在 ASP.Net 5 中构建一个控制台应用程序,但在入口点方面遇到了一些问题。我看过以下内容: Entry point can be marked with the 'async' modifier on CoreCLR?https://msdn.microsoft.com/en-us/magazine/dn913182.aspx。 当我使用 Visual Studio 2015 创建控制台应用程序(包)时,它会创建以下程序文件

public class Program
{
    public static void Main(string[] args)
    {
    }
}

但是我想利用实例将 Main 作为实例方法,因此我可以添加 Program 的无参数构造函数并具有一些依赖注入魔法。但是当我删除“静态”时,Visual Studio 会给我以下错误:

"程序没有适合条目的静态 'Main' 方法 点”。

我注意到在 project.json 文件中我有以下条目:

"compilationOptions": {
    "emitEntryPoint": true
}

如果我将其更改为 false。应用程序构建但它不执行 Main 方法。但它似乎确实调用了我的程序构造函数。那么我应该手动调用 Main() 吗?我觉得我在这里做错了什么。我将不胜感激。

【问题讨论】:

  • “ASP.Net 5 中的控制台应用程序” – 这听起来有点奇怪……我认为使用 DNX 获得“类似控制台”体验的唯一方法是使用命令功能。以dnx ef后面的代码为例。
  • 这里是 ASP.Net 5 docs.asp.net/en/latest/dnx/console.html 中控制台应用程序的快速介绍。如果我删除了更奇怪的“string[] args”参数,它似乎会执行 Main 方法.. –

标签: c# console-application asp.net-core dnx


【解决方案1】:

DNX 平台希望与常规的Program.Main 入口点兼容。因此控制台应用程序需要有一个静态入口点:

public static void Main(string[] args) { ... }

自 RC1 以来已更改:https://github.com/aspnet/Announcements/issues/113

相关:Runtime services no longer get injected into DNX console app (RC1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2019-03-18
    • 2021-11-26
    • 1970-01-01
    • 2021-12-25
    • 2018-03-21
    • 2019-01-18
    相关资源
    最近更新 更多