dotnet运行OR dotnet手表与命令行的开发环境?

Nex*_*s23 57 .net-core asp.net-core dotnet-cli .net-core-rc2

我正在使用dotnet watch命令来运行asp.net核心项目.但是,默认情况下,它会将其Production作为一个环境.

我尝试了两种选择:

1) > dotnet watch ASPNETCORE_ENVIRONMENT=Development

2) > dotnet run ASPNETCORE_ENVIRONMENT=Development
Run Code Online (Sandbox Code Playgroud)

但它仍然把生产作为一种环境.

注意:在visual studio环境中,变量在项目属性中设置为默认情况下的开发,并从visual studio中选择该变量.

问题是:如何使用命令行在开发中运行dotnet核心项目?:

1) dotnet run
2) dotnet watch
Run Code Online (Sandbox Code Playgroud)

Chr*_*n.K 93

ASPNETCORE_ENVIRONMENT是一个环境变量(和AFAIK),而不是切换到dotnetcli.

那么你要做的就是使用工具之前设置它:

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

rem Unix
$ export ASPNETCORE_ENVIRONMENT=Development
$ dotnet ...
Run Code Online (Sandbox Code Playgroud)

  • 设置了一个环境变量ASPNETCORE_ENVIRONMENT并将其值设置为Development,但仍然在命令行中它将托管环境作为生产.想知道.net core如何在使用visual studio运行时通过在项目属性中设置此变量来设置此变量.是不是有命令行开关?在Asp.Net Rc1中,我们曾经在项目属性的web命令中传递它,如--ASPNET_ENV Development. (2认同)

Tec*_*ium 27

你不,如果你调整如何使用环境变量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();
    }
Run Code Online (Sandbox Code Playgroud)

......变成这样的东西......

    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();
    }
Run Code Online (Sandbox Code Playgroud)

这样做,环境变量仍然可以工作,但你可以在命令行上覆盖它而不需要任何第三方依赖,如下所示:

dotnet run environment=development
dotnet run environment=staging
Run Code Online (Sandbox Code Playgroud)

这实际上是自耕农发电机的作用.

  • 如果您还没有将"Microsoft.Extensions.Configuration.CommandLine"包添加为项目的依赖项,那么您也需要它.它将包含`AddCommandLine()`扩展方法. (4认同)

Gei*_*erg 24

您还可以在调用时设置内联变量dotnet:

ASPNETCORE_ENVIRONMENT=Development dotnet run
Run Code Online (Sandbox Code Playgroud)

我发现这对于NPM脚本很有用,但必须始终在之前调用dotnet,例如:

{
  ...
  "scripts": {
    "start": "cd MyApp && ASPNETCORE_ENVIRONMENT=Development dotnet run",
    "watch": "cd MyApp && ASPNETCORE_ENVIRONMENT=Development dotnet watch"
  },
}
Run Code Online (Sandbox Code Playgroud)

注意:这仅适用于OS X或Linux; 对于跨平台解决方案,您可以使用cross-env:

npm install cross-env -D
Run Code Online (Sandbox Code Playgroud)

然后将脚本更改为:

{
  ...
  "scripts": {
    "start": "cd MyApp && cross-env ASPNETCORE_ENVIRONMENT=Development dotnet run",
    "watch": "cd MyApp && cross-env ASPNETCORE_ENVIRONMENT=Development dotnet watch"
  },
}
Run Code Online (Sandbox Code Playgroud)


Rou*_*ouR 15

检查文件

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-run?tabs=netcore21

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.1

dotnet run --launch-profile EnvironmentsSample
Run Code Online (Sandbox Code Playgroud)

启动设置.json

{ 
  "profiles": {    
    "EnvironmentsSample": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Staging"
      },
      "applicationUrl": "http://localhost:54340/"
    },   
  }
}
Run Code Online (Sandbox Code Playgroud)


emr*_*ins 14

资料来源:https://blogs.msdn.microsoft.com/webdev/2017/02/14/building-single-page-applications-on-asp-net-core-with-javascriptservices/

造型添加.

如果您在Windows中使用PowerShell,请执行$Env:ASPNETCORE_ENVIRONMENT = "Development"

如果您在Windows中使用cmd.exe,请执行setx ASPNETCORE_ENVIRONMENT "Development",然后重新启动命令提示符以使更改生效

如果您使用的是Mac/Linux,请执行export ASPNETCORE_ENVIRONMENT=Development


Dav*_*ays 9

要使用 dotnet run 或 dotnet watch 从 CLI 进行设置:

dotnet run --environment Development

dotnet watch run --environment Development