2017-12-05 4 views
1

webapi가되는 첫 번째 .NET CORE 2.0 프로젝트를 시작했습니다. 지금까지는 Autofac을 구성 할 때까지 문제가 없었습니다. 나는 here에 설명 된 지침을 따랐다. 그러나 불행하게도 StartUp에서 빌드 오류가 발생합니다. 분명히 ContainerBuilder에는 Populate()의 정의가 없습니다. 또한 AutofacServiceProvider 유형을 찾을 수 없습니다. 나는 그물을 수시로 찾고, 2.0에 대한 올바른 문서를 찾으려고 노력했다. 소스가 1.0 또는 2.0을 대상으로하는 경우 흩어져서 항상 명확하지는 않습니다. 불행히도 모든 옵션은 빌드 오류로 끝나기 때문에 공식 문서에서 제공하는 구현을 고수 할 것입니다. Autofac이 .NET Core 2.0에서이 형식의 초기화를 지원하지 않을 수도 있습니다. 참고로.NET Core 2.0에서 Autofac을 설정하는 데 문제가 있습니다.

이에

using Autofac; 
using System; 
using Microsoft.AspNetCore.Builder; 
using Microsoft.AspNetCore.Hosting; 
using Microsoft.EntityFrameworkCore; 
using Microsoft.Extensions.Configuration; 
using Microsoft.Extensions.DependencyInjection; 

namespace TEST.API 
{ 
    public class Startup 
    { 
     public Startup(IConfiguration configuration) 
     { 
      Configuration = configuration; 
     } 

     public IConfiguration Configuration { get; } 

     public IServiceProvider ConfigureServices(IServiceCollection services) 
     { 
      services.AddMvc(); 

      var containerBuilder = new ContainerBuilder(); 
      containerBuilder.RegisterModule<ServiceModule>(); 
      containerBuilder.Populate(services); 
      var container = containerBuilder.Build(); 
      return new AutofacServiceProvider(container); 
     } 

     public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
     { 
      if (env.IsDevelopment()) 
      { 
       app.UseDeveloperExceptionPage(); 
      } 

      app.UseMvc(); 
     } 
    } 
} 


<Project Sdk="Microsoft.NET.Sdk.Web"> 
    <PropertyGroup> 
    <TargetFramework>netcoreapp2.0</TargetFramework> 
    </PropertyGroup> 
    <ItemGroup> 
    <Folder Include="wwwroot\" /> 
    </ItemGroup> 
    <ItemGroup> 
    <ProjectReference Include="..\Model\Recipy.Model.csproj" /> 
    <ProjectReference Include="..\Service\Recipy.Service.csproj" /> 
    </ItemGroup> 
    <ItemGroup> 
    <PackageReference Include="Autofac" Version="4.6.2" /> 
    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.0" /> 
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> 
    </ItemGroup> 
    <ItemGroup> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" /> 
    </ItemGroup> 
</Project> 
+0

왜 대신 Autofac를 사용하는 내장 DI 프레임 워크? –

+1

모듈 덕분에 나는 과거와 함께 작업 해왔다. :) – Nieksa

답변

1

상당히 쉬운 솔루션은 채우기 방법과 AutofacServiceProvider 모두는 순간에 사용이 arent 네임 스페이스에 있습니다. 또한 "Autofac.Extensions.DependencyInjection"

다음 그 두 가지 문제가 해결됩니다 필요

+0

음 조금 부끄럽습니다. VSCode는 참조 추가에 대한 제안을하지 않았으므로, 나는 그것이 나를 어리 석다고 판결했습니다. 당신의 통찰력에 감사드립니다. :) – Nieksa

관련 문제