【问题标题】:Can't use IServiceCollection even with NuGet package即使使用 NuGet 包也无法使用 IServiceCollection
【发布时间】:2021-03-18 03:37:54
【问题描述】:

我正在尝试将依赖注入添加到我的 .NET 4.7.2 MVC 应用程序中。我已经像这样创建了一个启动文件:

using Microsoft.Extensions.DependencyInjection;

public class Startup
{
   public void Configuration(IAppBuilder appBuilder)
   {

   }

   public static void ConfigureServices(IServiceCollection services)
   {

   }
}
 

这是空的,我从 NuGet 包管理器添加了Microsoft.Extensions.DependencyInjection,但由于某种原因我收到了这个错误 -

找不到类型或命名空间名称“IServiceCollection” (您是否缺少 using 指令或程序集引用?

有人知道我错过了什么吗?我关注了微软网站,但仍然卡住了。

【问题讨论】:

  • 您打算如何将其集成到 ASP.NET MVC 中?添加Startup 类不会神奇地将DI 功能添加到MVC。您可能需要实现 IDependencyResolverIControllerFactory 实现并自动注册您的 MVC 控制器。

标签: c# .net dependency-injection


【解决方案1】:

根据docs.microsoft.com,这个接口存在于程序集Microsoft.Extensions.DependencyInjection.Abstractions.dll中。

我猜你正在安装 Microsoft.Extensions.DependencyInjection.dll,而不是 Abstractions 程序集。

当我尝试将框架版本切换到 4.7.2 时,文档也会抱怨,因此该版本的框架可能不存在此接口。

请求的页面不适用于 .NET Framework 4.7.2。你有 已重定向到最新的产品版本此页面可用 为。

【讨论】:

  • 我不明白,因为我可以使用ServiceCollection(),但不能使用IServiceCollection
  • @KTOV ServiceCollection 是实现,IServiceCollection 是抽象。它们在不同的包装中。您只安装了前者。
猜你喜欢
  • 2021-05-06
  • 2021-10-27
  • 1970-01-01
  • 2013-08-06
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2016-05-15
相关资源
最近更新 更多