【问题标题】:Is launchSettings.json used when running ASP.NET 5 apps from the command line on Mac?从 Mac 上的命令行运行 ASP.NET 5 应用程序时是否使用了 launchSettings.json?
【发布时间】:2016-01-01 02:08:07
【问题描述】:

我正在使用 Mac 上的 Visual Studio 代码开发 ASP.NET 5 Web API 应用程序。我手动修改了我的Properties/launchSettings.json 文件,使用ASPNET_ENV 环境变量将所有配置文件的环境设置为Staging

但是,当我在 Mac 终端中运行 dnx web 以启动应用程序时,我仍然得到 Production 环境:

如果我在 Mac 上使用 Visual Studio Code,是否可以使用 launchSettings.json 来指定环境变量(以及环境类型)?还是它特定于完整的 Visual Studio?

ASP.NET 5 文档 suggest launchSettings.json 可用于注入环境变量。但是,this SO discussion 建议通过命令传递它们。

【问题讨论】:

标签: c# configuration environment-variables asp.net-core


【解决方案1】:

LaunchSettings.json 严格来说是一个 VS 概念。 在其他情况下,您必须按照以下命令配置环境变量:

对于标准命令行运行,使用:

set ASPNET_ENV=Development

dnx web

对于 powershell,使用:

$env:ASPNET_ENV='Development'

dnx web

短版: dnx web ASPNET_ENV=Development

【讨论】:

  • 上述答案是正确的,但 OP 确实声明他使用的是 Mac。为了将环境设置为在 Mac 上开发,请从终端使用以下命令:export ASPNET_ENV=Development
  • 当尝试在 project.json commands 部分中设置它时,您会得到类似:"commands": { "web": "Microsoft.AspNet.Server.Kestrel --config hosting.Development.json --ASPNET_ENV Development" }。对吗?
  • 环境变量“ASPNET_ENV”已过时,已替换为“ASPNETCORE_ENVIRONMENT”(.NET Core RC2)
【解决方案2】:

在 Mac 上,使用终端输入:

export ASPNETCORE_ENVIRONMENT=Development && dotnet run

要求:

【讨论】:

  • 或者在 Windows 中设置 ASPNETCORE_ENVIRONMENT=Development && dotnet run -> 这对我有用
【解决方案3】:

添加到@Chrysalis 答案,您还可以通过在命令行上传递所需的变量来避免“弄乱”当前环境。

project.json 文件中,假设您有一个专用于开发环境的web-dev 命令:

"commands": {
  "web-dev": "Microsoft.AspNet.Server.Kestrel 
    --ASPNET_ENV Development --Hosting:Environment Development 
    --config hosting.Development.json",
},

您可以在其中查看ASPNET_ENVHosting:Environment 的设置方式以及调用特定的hosting.json 配置。
注意: 命令分为几行,仅用于可读性,在实际粘贴到 JSON 文件之前再次加入。

【讨论】:

    猜你喜欢
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多