ASP.NET Core中使用异步(Async)Main方法

在C#7.1中支持异步的Main方法(async Main),但是这个功能可能不能直接使用,要做一下配置 ,因为项目中默认的C#版本可能不是7.1,具体怎样配置下面介绍一下。

1、示例代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace WebApplication2
{
    public class Program
    {
        public static async Task Main(string[] args)
        {
           await BuildWebHost(args).RunAsync();
        }
        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
}

运行报错如下,

错误 CS5001 程序不包含适合于入口点的静态 "Main" 方法 WebApplication2 C:\Users\Administrator\Documents\Visual Studio 2017\Projects\WebApplication2\WebApplication2\CSC 1 活动的

2、修改配置

有下面两种方法,选择一种即可。

1)修改.csproj文件

找到项目的.csproj文件,用文本编辑器打开,或在项目名称上右键,点击右键菜单上的“编辑XXXX(项目名).csproj文件"选项,在文件添加<LangVersion>latest</LangVersion>

<LangVersion>7.1</LangVersion>,例如,

<ProjectSdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReferenceInclude="Microsoft.AspNetCore.All"Version="2.0.0" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReferenceInclude="Microsoft.VisualStudio.Web.CodeGeneration.Tools"Version="2.0.0" />
    <DotNetCliToolReferenceInclude="Microsoft.EntityFrameworkCore.Tools.DotNet"Version="2.0.0" />
    <DotNetCliToolReferenceInclude="Microsoft.DotNet.Watcher.Tools"Version="2.0.0" />
  </ItemGroup>
</Project>

2)修改项目生成配置

在项目名称上右键,点击右键菜单上的“属性”,具体如下图,


在配置中先选择“所有配置”,之后点击“高级”选项,就可以选择C#语言版本。

推荐阅读
cjavapy编程之路首页