Подтвердить что ты не робот

Dotnet run или dotnet смотреть с средой разработки из командной строки?

Я использую команду dotnet watch для запуска основного проекта asp.net. Однако по умолчанию он выбирает среду Production.

Я попробовал оба варианта, используя:

1)    dotnet watch ASPNETCORE_ENVIRONMENT=Development

2)    dotnet run ASPNETCORE_ENVIRONMENT=Development

Но он по-прежнему воспринимает производство как среду.

Примечание. В переменной окружения визуальной студии задаются свойства проекта, так как разработка по умолчанию и запуск из visual studio выбирает эту переменную.

Вопрос: как запустить проект ядра dotnet в разработке из командной строки, используя либо?:

1) dotnet run
2) dotnet watch
4b9b3361

Ответ 1

ASPNETCORE_ENVIRONMENT - это переменная среды (и AFAIK), а не переключатель в dotnet cli.

Итак, что бы вы сделали, установите его перед использованием инструмента:

rem Windows
C:\> set ASPNETCORE_ENVIRONMENT=Development
C:\> dotnet ...

rem Unix
$ export ASPNETCORE_ENVIRONMENT=Development
$ dotnet ...

Ответ 2

Вам не нужно использовать переменные среды, если вы отрегулируете, как WebHostBuilder обрабатывает свою конфигурацию. Это просто значение по умолчанию для dotnet new -t web. Например, если вы хотите установить среду по умолчанию для "разработки" вместо производства и упростить переопределение среды в командной строке, вы можете сделать это, изменив нормальный код Program.cs на этот...

    public static void Main(string[] args) {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseUrls("http://0.0.0.0:5000")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }

... во что-то подобное...

    private static readonly Dictionary<string, string> defaults =
        new Dictionary<string, string> {
            { WebHostDefaults.EnvironmentKey, "development" }
        };

    public static void Main(string[] args) {
        var configuration =
            new ConfigurationBuilder()
                .AddInMemoryCollection(defaults)
                .AddEnvironmentVariables("ASPNETCORE_")
                .AddCommandLine(args)
                .Build();

        var host =
            new WebHostBuilder()
                .UseConfiguration(configuration)
                .UseKestrel()
                .UseUrls("http://0.0.0.0:5000")
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();

        host.Run();
    }

Выполняя это, переменные среды все равно будут работать, но вы можете переопределить их в командной строке без зависимостей сторонних разработчиков, например:

dotnet run environment=development
dotnet run environment=staging

Это на самом деле то, что генераторы йоменов.

Ответ 3

Вы также можете установить переменную inline при вызове dotnet:

ASPNETCORE_ENVIRONMENT=Development dotnet run

Я нашел, что это отлично подходит для сценариев NPM, но всегда нужно вызывать прямо перед dotnet, например:

{
  ...
  "scripts": {
    "start": "cd MyApp && ASPNETCORE_ENVIRONMENT=Development dotnet run",
    "watch": "cd MyApp && ASPNETCORE_ENVIRONMENT=Development dotnet watch"
  },
}

Примечание.. Это работает только в OS X или Linux; для кросс-платформенного решения вы можете использовать cross-env:

npm install cross-env -D

Затем измените сценарии на:

{
  ...
  "scripts": {
    "start": "cd MyApp && cross-env ASPNETCORE_ENVIRONMENT=Development dotnet run",
    "watch": "cd MyApp && cross-env ASPNETCORE_ENVIRONMENT=Development dotnet watch"
  },
}

Ответ 4

Источник: https://blogs.msdn.microsoft.com/webdev/2017/02/14/building-single-page-applications-on-asp-net-core-with-javascriptservices/

Добавлен стиль.

Если вы используете PowerShell в Windows, выполните $Env:ASPNETCORE_ENVIRONMENT = "Development"

Если вы используете cmd.exe в Windows, выполните setx ASPNETCORE_ENVIRONMENT "Development", а затем перезапустите свою командную строку, чтобы изменения вступили в силу.

Если вы используете Mac/Linux, выполните export ASPNETCORE_ENVIRONMENT=Development