c# - 我应该将 Main 方法放在使用 "Host.CreateDefaultBuilder(args).Build();"的控制台应用程序的什么位置?

标签 c# asp.net-core .net-core console

我正在按照本指南创建一个控制台应用程序:https://learn.microsoft.com/en-us/dotnet/core/extensions/configuration

  • 我是否将 Main 方法放在“//应用程序代码应从此处开始”的位置。 “?
  • 我是否使用 Main 方法,或者我该如何解决这个问题?

我现有的结构:

namespace MyNameSpace
{
    public class Program
    {
        public static async Task Main(string[] args)
        {
            //application logic......
        }
     }
}

最佳答案

您不需要创建显式的 Main 方法。 C# top-level statements意味着教程中的三行代码:

using Microsoft.Extensions.Hosting;
using IHost host = Host.CreateDefaultBuilder(args).Build();
await host.RunAsync();

... 已经形成了一个有效的程序。它大致相当于:

using Microsoft.Extensions.Hosting;

class Program
{
    static async Task Main(string[] args)
    {
        using IHost host = Host.CreateDefaultBuilder(args).Build();
        await host.RunAsync();
    }
}

我鼓励您使用现有的顶级语句方法,除非您需要初始化代码更复杂...尽管您可以编写类和Main 显式声明方法。

同一教程中后面的示例显示了大量的应用程序启动代码,仍然使用顶级语句。或者您可以只创建一个新的 ASP.NET Core 应用程序,它将显示更多内容。

关于c# - 我应该将 Main 方法放在使用 "Host.CreateDefaultBuilder(args).Build();"的控制台应用程序的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72009166/

相关文章:

c# - 哪个更好 - 调用空方法或使用许多接口(interface)

c# - 在 C# 中解析带有标题的 CSV 文件

c# - 如何在 C# 中捕获 SMB/CIFS 数据包?

c# - 如果 context.Request.Scheme 设置为 "https",API 无法连接到 Azure 上的 IdentityServer4

c# - try-catch 在 IL 中如何工作?

c# - 将查询字符串添加到 ASP.NET MVC 中的 HtmlHelper

authentication - Blazor 服务器 - 如何配置本地 ADFS 安全性?

c# - 如何替换 IndexOutOfRangeException 错误并在 C# 中使用 BadRequest() 代替?

asp.net-core - 什么取代了 CallContextServiceLocator?

c# - .NETCore 应用程序因 StackOverflowException 而终止