Как установить SetBasePath для расположения DLL на Program.Main - PullRequest
0 голосов
/ 11 января 2019

При запуске 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 голосов
/ 11 января 2019

В данный момент вы устанавливаете рабочий каталог

.SetBasePath(Directory.GetCurrentDirectory())

Это каталог, в котором вы запускаете процесс /, более конкретно cd /. Каталог, который вы действительно хотите, это каталог вашей сборки :

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

Возможно, вам следует подумать о том, чтобы вместо этого изменить рабочий каталог на каталог вашего приложения, e. г. cd /tmp/donetproject/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...