让autofac与mvc6 beta5一起使用

Div*_*Dan 8 c# asp.net dependency-injection autofac asp.net-core-mvc

我正在尝试使用我正在处理的mvc6应用程序使用autofac.我发现这篇博客文章似乎有点过时了.它看起来像使用beta3位

我正在使用这个clr版本

1.0.0-beta5-11911

我的项目有这两个参考

"Autofac": "4.0.0-alpha2",
"Autofac.Dnx": "4.0.0-alpha2",
Run Code Online (Sandbox Code Playgroud)

在文章中讨论了如何修改startup.cs

    // Create the Autofac container builder.
        var builder = new Autofac.ContainerBuilder();

        // Add any Autofac modules or registrations.
        builder.RegisterModule(new AutofacModule());

        // Populate the services.
        builder.Populate(services);

        // Build the container.
        var container = builder.Build();
        return container.Resolve<IServiceProvider>();
Run Code Online (Sandbox Code Playgroud)

上面的代码抱怨builder.Populate(services);给我一个错误

"IServiceDescriptor"类型在未引用的程序集中定义.您必须添加对程序集"Microsoft.Framework.DependencyInjection.IServiceDescriptor,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null"的引用.

从我的研究看起来像beta4 DependencyInjection.IserviceDescriptor被删除.

有没有其他人设法让autofac使用最新的beta5位?

erP*_*rPe 7

对于任何想要在配置下运行AutoFac的人来说,允许我在beta6中使用它

下面是project.json的片段

  "dependencies": {
"Autofac": "4.0.0-beta6-110",
"Autofac.Framework.DependencyInjection": "4.0.0-beta6-110",
"Microsoft.AspNet.Mvc": "6.0.0-beta6",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta6"
},
Run Code Online (Sandbox Code Playgroud)

然后是startup.cs的一部分

    public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        //create Autofac container build
        var builder = new ContainerBuilder();

        //populate the container with services here..
        builder.RegisterType<DemoService>().As<IProjectDemo>();
        builder.Populate(services);

        //build container
        var container = builder.Build();

        //return service provider
        return container.ResolveOptional<IServiceProvider>();
    }
Run Code Online (Sandbox Code Playgroud)

如@peco所述,请确保您拥有

using Autofac.Framework.DependencyInjection
Run Code Online (Sandbox Code Playgroud)

这让我在AutoFac上得到了通知:)希望这会有所帮助!

  • 现在是Autofac.Extensions.DependencyInjection :) (5认同)
  • 对于project.json中的RC1,我们需要使用这些依赖项:"Autofac":"4.0.0-rc1-177","Autofac.Extensions.DependencyInjection":"4.0.0-rc1-177" (3认同)