我正在努力让autofac使用我正在处理的mvc6应用程序。我发现this blog article然而它似乎有点过时了。看起来它使用beta3位
我正在使用这个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被删除了。
有没有其他人设法让autofac使用最新的beta5位?
答案 0 :(得分: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"
},
然后是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上得到了通知:)希望这会有所帮助!