让autoface与mvc6 beta5一起工作

本文关键字:一起 工作 beta5 mvc6 autoface | 更新日期: 2023-09-27 17:51:11

我正试图让autoface与我正在工作的mvc6应用程序一起工作。我发现了这篇博客文章,但它似乎有点过时了。它看起来像是在使用β 3位

我正在使用这个clr版本

1.0.0-beta5-11911

我的项目有这两个参考

"Autofac": "4.0.0-alpha2",
"Autofac.Dnx": "4.0.0-alpha2",

文章中讨论了如何修改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>();

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

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

从我的研究,它看起来像在beta4 DependencyInjection。删除IserviceDescriptor。

还有人能让autoface用最新的测试版工作吗?

让autoface与mvc6 beta5一起工作

对于那些想知道如何让AutoFac在配置允许的情况下运行的人

下面是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"
},

然后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>();
    }

正如@peco提到的,确保你有

using Autofac.Framework.DependencyInjection

这让我开始使用AutoFac:)希望这对你有帮助!