如何将SetBasePath设置为Program.Main上的dll位置

时间:2019-01-11 01:50:54

标签: c# asp.net-core asp.net-core-mvc

启动dotnet dll

 cd /
 dotnet /tmp/donetproject/donetproject.dll

代码

.AddJsonFile("hostsettings.json", optional: true)

会看

  

/hostsettings.json

不是

  

/tmp/donetproject/hostsettings.json

设置GetCurrentDirectory无效

.SetBasePath(Directory.GetCurrentDirectory())

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }
    public static IWebHostBuilder CreateWebHostBuilder(string[] args)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("hostsettings.json", optional: true)
            .AddCommandLine(args)
            .Build();

        return WebHost.CreateDefaultBuilder(args)
            .UseUrls()
            .UseConfiguration(config)
                .UseStartup<Startup>();
    }
}

1 个答案:

答案 0 :(得分:3)

您当前正在设置工作目录

.SetBasePath(Directory.GetCurrentDirectory())

这是目录,您可以在其中启动进程/,更具体地说是cd /。您真正想要的目录是directory of your assembly

.SetBasePath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))

可能您应该考虑将工作目录更改为应用程序的目录,例如。 G。 cd /tmp/donetproject/