如何访问Program.cs Main方法中的IHostingEnvironment,ContentRoot?

问题描述

我需要在IHostingEnvironment.ContentRootPath方法内访问Program.cs -> Main。我从互联网上获得了一些答案,但无济于事。

我的代码如下所示;我可以在类型IHostingEnvironment的Main方法中声明一个变量,但是我不确定应该用什么对其进行初始化。

public static void Main(string[] args)
{
    IHostingEnvironment env;
}

解决方法

您可以从宿主对象中获取它:

public static void Main(string[] args)
{
    var builder = CreateHostBuilder(args);
    var host = builder.Build();
    var hostingEnvironment = host.Services.GetService(typeof(IHostingEnvironment));

    host.Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });