我试图使用autofac与asp.net 5 rc1和所有的指南我看起来似乎不适用于rc1这里是我的代码
public IServiceProvider ConfigureServices(IServiceCollection services)
{
...
services.AddCaching();
services.AddMvc();
services.AddSession();
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
// Create the Autofac container builder.
var builder = new ContainerBuilder();
// Add any Autofac modules or registrations.
builder.RegisterModule(new DiRegistration());
// Populate the services.
//This Line fails
builder.Populate(services);
// Build the container.
var container = builder.Build();
// Resolve and return the service provider.
return container.Resolve<IServiceProvider>();
}
调用builder.Populate(services)时;我收到此错误
无法转换为&#39; Microsoft.Extensions.DependencyInjection.IServiceCollection&#39;到&#39; System.Collections.Generic.IEnumerable&#39; Web.DNX 4.5.1 C:\ SVN \ Datayal2 \ Web \ src \ Web \ Startup.cs 81
这是我的项目json
{
"userSecretsId": "aspnet5-Web-bb6d2db2-bbf8-461d-8865-db72b039dd7f",
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Autofac": "4.0.0-beta8-157",
"Autofac.Framework.DependencyInjection": "4.0.0-beta8-157",
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Session": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.Caching.SqlConfig": "1.0.0-rc1-final",
"Microsoft.Extensions.Caching.SqlServer": "1.0.0-rc1-final",
"Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": {
"dependencies": {
"Shared": "1.0.0-*"
},
"frameworkAssemblies": {
"System.configuration": "4.0.0.0"
}
}
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}
请帮助我确定它可能只是某些命名空间发生了变化,但我无法弄清楚如何。
答案 0 :(得分:1)
您需要将Autofac.Framework.DependencyInjection
更新为兼容rc1的软件包。您可以使用此symver 4.0.0-rc1-*
始终使用最新的rc1软件包,或者如果不起作用,请安装我知道与rc1(4.0.0-rc1-177
)兼容的最新特定版本(在撰写本文时)
如果出于某种原因Nuget Feed不起作用,您可能还需要添加autofac的MyGet Feed网址(https://www.myget.org/F/autofac/api/v3/index.json)。
您可以从MyGet找到所有autofac的预发布包。
此外,当您引用Autofac.Framework.DependencyInjection
时,您也不需要明确引用Autofac
包,因为它会自动将其下拉。这样可以避免在project.json中指定这两个版本。简而言之,您在project.json
中所需要的只是:
"dependencies": {
"Autofac.Extensions.DependencyInjection": "4.0.0-rc1-177"
}
答案 1 :(得分:0)
好的我发现问题是一些名称空间更改看起来像autofac包与rc1兼容,但是Autofac.Extensions.DependencyInjection没有rc1 nuget包但我为了让它工作而做的是我下载了rc1 gitHub完成所有工作之后{/ 3}}。