Я занимаюсь разработкой консольного приложения .NET Core 2.1 с использованием внедрения зависимостей (Microsoft.Extensions.DependencyInjection).Код выглядит примерно так:
class Program
{
static async Task Main(string[] args)
{
//...
var configuration = GetConfiguration();
var serviceProvider = ConfigureServices(configuration);
var importer = serviceProvider.GetRequiredService<DataImporter>();
var result = await importer.ImportCentersAndStores(fileName);
//...
}
private static IConfigurationRoot GetConfiguration()
{
return new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
}
private static ServiceProvider ConfigureServices(IConfigurationRoot configuration)
{
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
return new ServiceCollection()
.AddLogging(builder =>
{
builder.AddConfiguration(configuration.GetSection("Logging"));
builder.AddConsole();
})
.AddOptions()
.AddAutoMapper()
.AddDatabase(configuration.GetConnectionString("Blah"))
.AddTransient<DataImporter>()
.BuildServiceProvider();
}
}
Класс DataImporter
и метод ImportCentersAndStores
не являются чем-то особенным - он делает разные вещи, включая чтение файла Excel, и делает некоторые записи.Я не думаю, что природа этого кода актуальна.
Теперь проблема в том, что всякий раз, когда в классе DataImporter
генерируется исключение, трассировка стека не имеет фреймов с моим кодом:
Экран отладки выглядит следующим образом:
Это происходит ли я ловлювыброшенное исключение или нет.Вышеуказанное исключение происходит в методе из DataImporter
, вызываемом из ImportCentersAndStores
.Так что там должно быть два кадра моего кода.
Нет контекста для отладки.Я не могу проверять переменные или что-либо еще.
Я понятия не имею, что такое System.Private.CoreLib
или почему он занимает большую часть стека вызовов.Я не знаю, действительно ли проблема связана с моим использованием DI.
Just My Code не имеет значения.Настройки исключения являются настройками по умолчанию.Я не вижу никаких вариантов отладки, которые должны это делать.
На случай, если вам интересно: я включил это в файл проекта, чтобы включить асинхронный метод Main:
<LangVersion>7.1</LangVersion>
Может кто-нибудь сбросить любойсвет на это?