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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es möglicherweise fehlen ein paar Abhängigkeiten:
Microsoft.Extensions.Die Protokollierung.Konsole
, die dieAddConsole
- Erweiterung-Methode.Microsoft.Extensions.Optionen.ConfigurationExtensions
, die dieConfigure<T>
Erweiterung Methode, die Sie scheinen zu fehlen.Hinsichtlich der Konfiguration der Dienste .NET-Core-Dateien, Andrew Lock hat ein post auf das Thema für die erste version .NET Core. Einige dieser veraltet sein können jetzt mit .NET Core 2 Neuankömmling, aber das ist es Wert, gelesen zu werden.
InformationsquelleAutor Kirk Larkin
Aufbauend auf Kirk Larkins beantworten (stellen Sie sicher, dass Sie die nuget-Pakete installes), können Sie zur Vereinfachung der Protokollierung Konfiguration und überspringen Sie die Erklärung der loggerFactory, indem Sie übergeben eine
ILoggerBuilder
zu.AddLogging()
:InformationsquelleAutor Marco