代码之家  ›  专栏  ›  技术社区  ›  Tor Haugen

.NET Core 2.1-我的代码未出现在VS2017堆栈跟踪中

  •  0
  • Tor Haugen  · 技术社区  · 6 年前

    我正在使用依赖项注入(microsoft.extensions.dependencyInjection)开发.NET核心2.1控制台应用程序。代码如下所示:

    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文件和进行一些日志记录。我不认为代码的性质是相关的。

    现在的问题是,每当在 数据转换器 类,堆栈跟踪没有包含我的代码的帧:

    My useless call stack

    调试显示如下:

    My useless debugging display

    无论我是否捕获抛出的异常,都会发生这种情况。上述异常发生在 数据转换器 打电话来 进口中心和商店 . 所以我的代码应该有两帧。

    没有用于调试的上下文。我不能检查变量或任何东西。

    我不知道什么 System.Private.CoreLib 它占用了大部分调用堆栈。我不知道问题是否与我使用DI有关。

    只是我的代码没有区别。异常设置是默认设置。我看不到任何应该这样做的调试选项。

    如果您想知道:我已经在项目文件中包含了这个,以启用异步主方法:

    <LangVersion>7.1</LangVersion>
    

    有人能解释一下吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mike Makarov    6 年前

    在第二个屏幕截图上:异常帮助程序(弹出)->查看详细信息->堆栈跟踪。这将是在异常在 async 香肠踢了进来。

    所以-是的-这种行为是因为你 异步的 东西。我真的很好奇你为什么要做任何事 异步的 在里面 慰问 应用程序?