让Autofac与MVC6/ASP.NET5一起工作

本文关键字:NET5 一起 工作 ASP Autofac MVC6 | 更新日期: 2023-09-27 18:28:25

我无法让autofac工作,我已经研究过这个可能重复的问题,但它没有帮助。

我使用的是完整的.NET堆栈,DNX 4.5.1

我包含了以下依赖项。

  "dependencies": {
    // matched latest autofac version with latest dependencyinjection version.
    "Autofac": "4.0.0-beta8-157",
    "Autofac.Framework.DependencyInjection": "4.0.0-beta8-157",    
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final" ...

以及以下初始化代码。

// void?
public void ConfigureServices(IServiceCollection services)
{
     services.AddMvc();
     var container = new ContainerBuilder();
     ...
     // compilation error here!
     container.Populate(services);
}

我收到这个错误:

Error   CS1503  Argument 2: cannot convert
from'Microsoft.Extensions.DependencyInjection.IServiceCollection' to
'System.Collections.Generic.IEnumerable<Microsoft.Framework.DependencyInjection.ServiceDescriptor>' 
MuWapp.DNX 4.5.1    C:'MuWapp'Startup.cs    54  Active

让Autofac与MVC6/ASP.NET5一起工作

对于RC1,您需要使用Autofac.Extensions.DependencyInjection包。

https://www.nuget.org/packages/Autofac.Extensions.DependencyInjection/

我们重命名了我们的包,以与微软对Microsoft.Extensions.DependencyInjection的重命名保持一致。它一直是支持早期DNX版本的移动目标。

正如我在评论中提到的,您应该在project.json中使用所有包的兼容版本。我在它们的页面上看到:https://github.com/autofac/Autofac/releases他们已经发布了RC1的版本,但是RC1没有Autofac.Framework.DependencyInjection,所以如果你需要这个包,你将无法运行它。

我认为你应该在开发过程中使用内置的依赖注入,直到有RTM版本,所有的第三方包都会变得稳定。

内置DI具有将类注入控制器、属性和属性的功能,因此除非您使用一些需要autofac的高级场景,否则您应该坚持使用asp.net 5 DI。