C# Can';t获得依赖注入';s配置<&燃气轮机;在.net核心控制台应用程序中工作
我试图在.net核心控制台应用程序中实现依赖项注入,但我无法配置MySettingsC# Can';t获得依赖注入';s配置<&燃气轮机;在.net核心控制台应用程序中工作,c#,dependency-injection,.net-core,console-application,C#,Dependency Injection,.net Core,Console Application,我试图在.net核心控制台应用程序中实现依赖项注入,但我无法配置MySettings public static class Program { public static IConfigurationRoot Configuration { get; private set; } public static void Main(string[] args) { var builder = new ConfigurationBuilder()
public static class Program
{
public static IConfigurationRoot Configuration { get; private set; }
public static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
Configuration = builder.Build();
var serviceProvider = BuildDi(Configuration);
serviceProvider.GetRequiredService<Bootstrapper>().DoThings();
}
private static IServiceProvider BuildDi(IConfigurationRoot configuration)
{
var services = new ServiceCollection();
services.Configure<MySettings>(configuration.GetSection("MySettings"));
services.AddSingleton<Bootstrapper>();
return services.BuildServiceProvider();
}
}
而appsettings.json是
{
"MySettings": {
"MyVariable": "test"
}
}
而引导者是
public class Bootstrapper
{
private readonly MySettings _settings;
public Bootstrapper(IOptions<MySettings> settings)
{
_settings = settings.Value;
}
public void DoThings()
{
Console.WriteLine(_settings.MyVariable);
}
}
公共类引导程序
{
私人只读MySettings\u设置;
公共引导程序(IOptions设置)
{
_设置=设置.值;
}
公共无效DoThings()
{
Console.WriteLine(_settings.MyVariable);
}
}
但是,当我试图访问Mysettings.MyVariable时,我得到null
我不明白我遗漏了什么,因为我在asp.net核心类型项目中做同样的事情没有问题
(是的,有点像,但还有一些步骤)控制台应用程序在运行时是否可以访问您的“appsettings.json”,请检查它是否复制到/bin文件夹中?:v我只需将appsettings.json设置为“始终复制”。。。谢谢@DarjanBogdan
public class Bootstrapper
{
private readonly MySettings _settings;
public Bootstrapper(IOptions<MySettings> settings)
{
_settings = settings.Value;
}
public void DoThings()
{
Console.WriteLine(_settings.MyVariable);
}
}