WebHostBuilder.Build() MissingMethodException in .NET Core 迁移方案

WebHostBuilder.Build() MissingMethodException in .NET Core migrated solution

我正在迁移使用 .NET Core SDK 1.0.0-preview2-1-003177 构建的解决方案,因为我想在 Visual Studio 2017 年使用它。我使用 .NET Core 中的 dotnet migrate 命令SDK 1.0.1,运行良好,可以编译。当我 运行 使用 IIS Express 的 Web 部件时,经典 Program.cs 包含

var host = new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();

host.Run();

Build() 时崩溃,但出现此异常

System.MissingMethodException: 'Method not found: 'System.IServiceProvider Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(Microsoft.Extensions.DependencyInjection.IServiceCollection)'.'

完全找不到原因

您的某些依赖项似乎没有更新到正确的版本。它可以是旧版本或新版本。您可以创建一个新项目 ( dotnet new ) 并验证 csproj 文件中的包版本。 99% 的错误是由版本不匹配引起的。

这发生在我身上,因为我太急了,安装了太多的 EntityFrameworkCore 包。

我有

Microsoft.EntityFrameworkCore 2.0.0-preview1-final
Microsoft.EntityFrameworkCore.SqlServer 1.1.2

我删除了第一个,所以剩下

Microsoft.EntityFrameworkCore.SqlServer 1.1.2

然后错误消失了。