2015-05-30 19 views
8

Próbuję uzyskać autofac pracy z aplikacją mvc6, nad którą pracuję. Znalazłem this blog article jednak wydaje się być trochę przestarzałe. To wygląda jak jego wykorzystaniem bitów Beta3Pierwsze autofac do pracy z mvc6 beta5

używam tej wersji clr

1.0.0-beta5-11911

Mój projekt ma te 2 odnośniki

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

W artykule omówiono modyfikowanie uruchamiania .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>(); 

Powyższy kod narzeka builder.Populate(services); dając mi błąd

typu „IServiceDescriptor” jest zdefiniowane w to zespół, który nie odwołuje. Należy dodać odniesienie do zestawu "Microsoft.Framework.DependencyInjection.IServiceDescriptor, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null".

Z moich badań wynika, że ​​w wersji beta4 DependencyInjection.IserviceDescriptor został usunięty.

Czy ktoś inny zdołał uzyskać autofac działający z najnowszymi bitami wersji beta5?

+0

Niewielka modyfikacja sprawdziła się var builder = new ContainerBuilder(); // Utworzenie kontenera i użycie domyślnych usług aplikacji jako zabezpieczenia zapasowego. // builder.RegisterType () .As () .InstancePerLifetimeScope(); builder.Register (c => new Logger()) . Jest to () .InstancePerLifetimeScope(); –

+1

Nadal pracujemy nad wersją beta 5. Potrzebujemy tego również do wsparcia konfiguracji. Sprawdź najnowszą wersję kanału Autofac MyGet; prawdopodobnie nie będziemy naciskać na NuGet, dopóki VS nie będzie dobrze współpracował z wersją beta 5. –

+0

Mam ten sam problem. Używam mvc6 beta5 + najnowszej wersji Autofac z pliku danych myget i wynika to z następującego wyjątku: 'System.MissingMethodException Nie znaleziono metody: 'Boolean Microsoft.Framework.DependencyInjection.ServiceCollectionExtensions.TryAdd (Microsoft.Framework.DependencyInjection. IServiceCollection, Microsoft.Framework.DependencyInjection.ServiceDescriptor) ".' – rocky

Odpowiedz

7

Dla każdego, kto będzie patrząc jak dostać AutoFac działa poniżej konfiguracji pozwolił mi używać go w beta6

Poniżej fragment 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" 
}, 

A potem część 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>(); 
    } 

Jak wspomniano przez @peco upewnij się że masz

using Autofac.Framework.DependencyInjection 

I to sprawiło, że zacząłem działać w AutoFacu :) Nadzieję, że to pomaga!

+5

To jest teraz Autofac.Extensions.DependencyInjection :) –

+3

prawo, dla RC1 w project.json musimy użyć tych zależności: " Autofac ":" 4.0.0-rc1-177 ", "Autofac.Extensions.DependencyInjection": "4.0.0-rc1-177" – Sergey