首页 > 解决方案 > 当前上下文中不存在名称 Host

问题描述

我正在关注本教程https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/working-with-sql?view=aspnetcore-3.0&tabs=visual-studio我得到了以下错误消息:名称主机在当前上下文中不存在

这是我的 Program.cs 文件的样子

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using MvcMovie.Data;
using MvcMovie.Models;
using System;

namespace MvcMovie
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = CreateHostBuilder(args).Build();

            using (var scope = host.Services.CreateScope())
            {
                var services = scope.ServiceProvider;

                try
                {
                    SeedData.Initialize(services);
                }
                catch (Exception ex)
                {
                    var logger = services.GetRequiredService<ILogger<Program>>();
                    logger.LogError(ex, "An error occurred seeding the DB.");
                }
            }

            host.Run();

        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

Host.CreateDefaultBuilder(args) 下有一条红线

标签: c#asp.net-core

解决方案


您引用的教程设置为使用 3.0,但 .csproj 的内容显示您使用的是 2.1。Host.CreateDefaultBuilder在 2.1 中不可用,这使您有两个选择:

  1. 切换到教程的 2.1 版本,它使用WebHost.CreateDefaultBuilder. 这可以使用 ASP.NET Core 文档页面的“版本”选择器来完成。
  2. 使用本教程的 3.0(或 3.1)版本并相应地配置您的项目。为此,您只需要适当版本的 SDK 和 Visual Studio。

如果可以,请使用 3.1 版本。这是推荐的 LTS 版本。


推荐阅读