在 .NET Core 3 和 3.1 中设置 Autofac
Setup Autofac in .NET Core 3 and 3.1
来自official Autofac documentation for ASP.NET Core 3.0(我使用的是.NET Core 3.1),官方文档中的startup
构造函数参数类型是IHostingEnvironment
public Startup(IHostingEnvironment env)
{
// In ASP.NET Core 3.0 `env` will be an IWebHostEnvironment, not IHostingEnvironment.
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
this.Configuration = builder.Build();
}
而我的是 IConfiguration
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
我如何在 .NET Core 3.1 中设置此方法?或者 Autofac 尚未发布 .NET Core 3.1 的文档?
在 .NET Core3.1 中设置 autofac 有两个步骤。
首先,你需要在下面写Program.cs。
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
然后,在Startup.cs中创建一个新方法。
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterAssemblyTypes(Assembly.Load("")).AsImplementedInterfaces();
}
来自official Autofac documentation for ASP.NET Core 3.0(我使用的是.NET Core 3.1),官方文档中的startup
构造函数参数类型是IHostingEnvironment
public Startup(IHostingEnvironment env)
{
// In ASP.NET Core 3.0 `env` will be an IWebHostEnvironment, not IHostingEnvironment.
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
this.Configuration = builder.Build();
}
而我的是 IConfiguration
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
我如何在 .NET Core 3.1 中设置此方法?或者 Autofac 尚未发布 .NET Core 3.1 的文档?
在 .NET Core3.1 中设置 autofac 有两个步骤。
首先,你需要在下面写Program.cs。
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
然后,在Startup.cs中创建一个新方法。
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterAssemblyTypes(Assembly.Load("")).AsImplementedInterfaces();
}