2015-05-30 15 views
8

Tôi đang cố gắng để có được autofac làm việc với một ứng dụng mvc6 tôi đang làm việc trên. Tôi tìm thấy this blog article tuy nhiên nó có vẻ là một chút ngày. Dường như nó sử dụng các bit beta3Bắt autofac để làm việc với mvc6 beta5

Tôi đang sử dụng phiên bản clr này

1.0.0-beta5-11911

dự án của tôi có tài liệu tham khảo những 2

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

Trong bài viết nói về cách sửa đổi 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>(); 

Đoạn mã trên phàn nàn về builder.Populate(services); đem lại cho tôi một lỗi

Loại 'IServiceDescriptor' được định nghĩa trong một hội đồng đó không được tham chiếu. Bạn phải thêm tham chiếu đến assembly 'Microsoft.Framework.DependencyInjection.IServiceDescriptor, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null'.

Từ nghiên cứu của tôi, có vẻ như trong bản beta4 DependencyInjection.IserviceDescriptor đã bị xóa.

Có ai khác đã quản lý để tự động làm việc với các bit beta5 mới nhất không?

+0

Một sửa đổi nhỏ làm cho nó hoạt động var builder = new ContainerBuilder(); // Tạo vùng chứa và sử dụng dịch vụ ứng dụng mặc định làm dự phòng AutofacRegistration.Populate (builder, services); // builder.RegisterType () .As () .InstancePerLifetimeScope(); builder.Register (c => new Logger()) .As () .InstancePerLifetimeScope(); –

+1

Chúng tôi vẫn đang hỗ trợ bản beta 5. Chúng tôi cũng cần hỗ trợ cấu hình đó. Kiểm tra nguồn cấp dữ liệu Autofac MyGet mới nhất; có lẽ chúng tôi sẽ không thúc đẩy NuGet cho đến khi VS cũng làm việc với bản beta 5 độc đáo. –

+0

Tôi đang gặp vấn đề tương tự. Tôi đang sử dụng mvc6 beta5 + phiên bản mới nhất của Autofac từ nguồn cấp dữ liệu myget và kết quả là ngoại lệ sau: 'System.MissingMethodException Phương thức không tìm thấy: 'Boolean Microsoft.Framework.DependencyInjection.ServiceCollectionExtensions.TryAdd (Microsoft.Framework.DependencyInjection. IServiceCollection, Microsoft.Framework.DependencyInjection.ServiceDescriptor) '.' – rocky

Trả lời

7

Đối với bất cứ ai sẽ tìm cách để có được AutoFac chạy dưới đây cấu hình cho phép tôi sử dụng nó trong beta6

Dưới đây là đoạn 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" 
}, 

Và sau đó một phần của 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>(); 
    } 

Như đã đề cập bởi @peco chắc chắn rằng bạn có

using Autofac.Framework.DependencyInjection 

Và điều đó khiến tôi chú ý đến AutoFac :) Hy vọng điều này sẽ hữu ích!

+5

Đây là bây giờ Autofac.Extensions.DependencyInjection :) –

+3

đúng, đối với RC1 trong project.json chúng ta cần sử dụng những phụ thuộc này: " Autofac ":" 4.0.0-rc1-177 ", "Autofac.Extensions.DependencyInjection": "4.0.0-rc1-177" – Sergey

Các vấn đề liên quan