Почему 'dotnet run' игнорит --environment Production?
От: LandWarrior  
Дата: 16.07.24 21:31
Оценка:
Почему он мне все время запускает приложенеи в окружении для Development?

$ dotnet run --environment Production
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://[::]:5002
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development


Как можно заставить dotnet использовать параметр --environment, а не брать его не пойми откуда?
Re: Почему 'dotnet run' игнорит --environment Production?
От: _FRED_ Черногория
Дата: 17.07.24 05:54
Оценка:
Здравствуйте, LandWarrior, Вы писали:

LW>Почему он мне все время запускает приложенеи в окружении для Development?

LW>$ dotnet run --environment Production

LW>Как можно заставить dotnet использовать параметр --environment, а не брать его не пойми откуда?

Может быть, имеет смысл ознакомиться внимательнее с документацией:

--launch-profile <NAME>

The name of the launch profile (if any) to use when launching the application. Launch profiles are defined in the launchSettings.json file and are typically called Development, Staging, and Production. For more information, see Working with multiple environments.

Help will always be given at Hogwarts to those who ask for it.
Re: Почему 'dotnet run' игнорит --environment Production?
От: RushDevion Россия  
Дата: 17.07.24 06:56
Оценка:
LW>Как можно заставить dotnet использовать параметр --environment, а не брать его не пойми откуда?

Проверил у себя. Работает, как ожидается.
> dotnet --version
8.0.300

> dotnet new webapi
The template "ASP.NET Core Web API" was created successfully.
Processing post-creation actions...
Restoring C:\tmp\tmp.csproj:
  Determining projects to restore...
  Restored C:\tmp\tmp.csproj (in 2.06 sec).
Restore succeeded.

> dotnet run
Building...
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5191
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development

> dotnet run --environment Production
Building...
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5191
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production

> set ASPNETCORE_ENVIRONMENT=Production
> dotnet run --no-launch-profile
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production


И этот функционал присутствует как минимум с .net 3.0.
Можно задавать через command line (параметр --environment), можно через переменную окружения DOTNET_ENVIRONMENT или ASPNETCORE_ENVIRONMENT, можно через launch profile (но это по сути те же переменные окружения).
А технически это реализовано через провайдеры конфигурации (command line, environment variables, appsettings.<env>.json), которые подключаются при настройке HostBuilder.
Возможно, у тебя какая-то кастомная конфигурация HostBuilder, в которой просто не подключен нужный провайдер для аргументов command line.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.