.net 6 BuildServiceProvider 丢失

pad*_*van 20 .net-core .net-6.0

net 6,使用“最小模板”创建控制台应用程序。尝试添加 DI 但缺少 BuildServiceProvider。我尝试用谷歌搜索有关如何迁移 ServiceCollection 的信息,但没有找到任何内容。

var services2 = new ServiceCollection();
var serviceProvider = services2.BuildServiceProvider();
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Fra*_* B. 21

在我的愚蠢案例中,我使用的是Microsoft.Extensions.DependencyInjection.Abstractions而不是Microsoft.Extensions.DependencyInjection. 我一开始没有注意到,因为ServiceCollection使用AddSingleton第一个 NuGet 也可以使用 、 等。两个 NuGet 的图标和作者相同。


dot*_*NET 5

以下两个步骤为我解决了这个问题(VS2022,.NET Standard 2.0):

  1. 确保您的所有项目都引用相同版本的Microsoft.Extensions.DependencyInjection. 在撰写本文时,最新版本是7.0.0. 您可以使用解决方案的 Nuget 配置页面中的“合并”选项卡来实现此目的。
  2. 右键单击有问题的项目并选择Manage Nuget Packages ,转到项目的 Nuget 配置页面(而不是解决方案的 Nuget 配置页面) 。其中,卸载Microsoft.Extensions.DependencyInjection然后重新安装它(再次确保您使用的版本与解决方案中的其他项目相同)。

之后重建解决方案,事情看起来应该不错。