Anmeldung und Konfiguration .Net-core-2.0-Konsolenanwendung?

Den folgenden code, habe den Fehler. Was ist der richtige Weg, um das setup-Protokollierung und Konfiguration-management .Net-Core-2.0-Konsolenanwendung?

Fehler CS1061 'LoggerFactory" enthält keine definition für 'AddConsole' und keine Erweiterungsmethode 'AddConsole' die Annahme ein erstes argument vom Typ 'LoggerFactory' gefunden werden konnte (fehlt eine using-Direktive oder ein Assemblyverweis?)

Error CS1503 Argument 2: keine Konvertierung von 'Microsoft.Extensions.- Konfiguration.IConfigurationSection' zu 'System.Aktion'

class Program
{
    static void Main(string[] args)
    {
        var services = new ServiceCollection();
        ConfigureServices(services);
        var serviceProvider = services.BuildServiceProvider();
        var app = serviceProvider.GetService<Application>();
        Task.Run(() => app.Run()).Wait();
    }

    private static void ConfigureServices(IServiceCollection services)
    {
        ILoggerFactory loggerFactory = new LoggerFactory()
            .AddConsole() //Error!
            .AddDebug();

        services.AddSingleton(loggerFactory); //Add first my already configured instance
        services.AddLogging(); //Allow ILogger<T>

        IConfigurationRoot configuration = GetConfiguration();
        services.AddSingleton<IConfigurationRoot>(configuration);

        //Support typed Options
        services.AddOptions();
        services.Configure<MyOptions>(configuration.GetSection("MyOptions")); //Error!

        services.AddTransient<Application>();
    }

    private static IConfigurationRoot GetConfiguration()
    {
        return new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddXmlFile("App.config", optional: true).Build();
    }

    public class MyOptions
    {
        public string Name { get; set; }
    }

    public class Application
    {
        ILogger _logger;
        MyOptions _settings;

        public Application(ILogger<Application> logger, IOptions<MyOptions> settings)
        {
            _logger = logger;
            _settings = settings.Value;
        }

        public async Task Run()
        {
            try
            {
                _logger.LogInformation($"This is a console application for {_settings.Name}");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToString());
            }
        }
    }
}
Außerhalb des Themas: Verwenden Sie GetSection(nameof(MyOptions)) statt GetSection("MyOptions").

InformationsquelleAutor ca9163d9 | 2017-08-28

Schreibe einen Kommentar