2017-12-05 11 views
1

私はwebapiとなる最初の.NET CORE 2.0プロジェクトを開始しました。これまでのところ、私はAutofacを設定しようとする問題にぶつかりました。私はhereと記載された指示に従った。しかし残念ながらStartUpでビルドエラーが発生します。明らかにContainerBuilderにはPopulate()の定義が含まれていません。またタイプAutofacServiceProviderが見つかりませんでした。私はしばらくの間、ネットを検索し、2.0の正しいドキュメントを探しています。ソースが1.0または2.0をターゲットにしているかどうかは、ばらばらになっており、必ずしも明確ではありません。残念ながら、すべてのオプションがビルドエラーに終わるので、私は公式のドキュメントで提供されている実装に固執すると思いました。 Autofacが.NET Core 2.0でこの形式の起動をサポートしない可能性はありますか? FYI.NETコア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の両方を使用すると、現時点で使用してアレント名前空間にあります。あなたはまた、「Autofac.Extensions.DependencyInjection」

し、それら二つの問題が解決しなければならないが必要

+0

それは少し恥ずかしいです。 VSCodeは参照を追加するための提案をしていないので、私はそれが私の愚かさを排除しました。あなたの洞察力に感謝します。 :) – Nieksa

関連する問題