让Autofac与MVC6 / ASP.NET5一起使用

时间:2015-12-30 09:34:07

标签: c# autofac

我无法让autofac工作,我看过这个potentially duplicate问题,但它没有帮助。

我正在使用完整的.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

2 个答案:

答案 0 :(得分:3)

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

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

我们将我们的软件包重命名为与Microsoft重命名为Microsoft.Extensions.DependencyInjection。它是支持早期DNX版本的移动目标。

答案 1 :(得分:0)

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

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

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