asp.net core 应用程序发布命令:
dotnet publish [<PROJECT>] [-f|--framework] [-r|--runtime] [-o|--output] [-c|--configuration] [--version-suffix] [-v|--verbosity] [-h|--help]
发布示例命令(生成在
bin/release/netcoreapp1.1/publish目录下):
dotnet publish -c release
上面命令并没有指定
EnvironmentName发布,什么意思呢?比如 ASP.NET Core 应用程序中的
appsettings.json配置,测试环境和生产环境配置并不相同(比如数据库连接字符串),如果用上面的发布命令,我们还需要手动拷贝下不同环境的
appsettings.json文件,以后要更改了,还需要再进行发布更新,很麻烦。
怎么解决上面的问题,很简单,指定下开发机或者服务器的
ASPNETCORE_ENVIRONMENT环境变量,设置环境变量之后,执行
dotnet *.dll启动程序的时候,ASP.NET Core 会自动加载此环境变量对应的
appsettings.*.json文件,比如
appsettings.Production.json。

其实,我们使用 VS 2017 F5 调试项目的时候,也会默认设置
ASPNETCORE_ENVIRONMENT环境变量的,比如 ASP.NET Core 应用程序中的
launchSettings.json示例配置:
"profiles": {"IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "api/values", "environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development" }},"AspNetCore.Samples": { "commandName": "Project", "launchBrowser": true, "launchUrl": "api/values", "environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "http://localhost:59522"}}
Startup示例配置:
public Startup(IHostingEnvironment env)
{var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
因为上面配置中,
ASPNETCORE_ENVIRONMENT设置的是
Development,我们在使用 VS 2017 F5 调试项目,会加载和使用项目下的
appsettings.Development.json配置文件,如果不存在此文件,ASP.NET Core 默认会使用
appsettings.json配置文件。
那我们怎么在服务器上设置
ASPNETCORE_ENVIRONMENT环境变量呢?很简单,敲个命令就可以了。
1. Windows 服务器设置
命令行:
>setx ASPNETCORE_ENVIRONMENT "Development"SUCCESS: Specified value was saved.
或者(需要管理员权限)
>setx ASPNETCORE_ENVIRONMENT "Development" /MSUCCESS: Specified value was saved.
PowerShell命令:
$Env:ASPNETCORE_ENVIRONMENT = "Prodction"
Windows 设置环境命令后,需要重新再开一个命令行
dotnet *.dll启动项目,才会有效。
2. MacOS/Linux 服务器设置
命令行:
export ASPNETCORE_ENVIRONMENT=development
dotnet *.dll启动项目的时候,我们可以看到当前的
Hosting environment,以便检查是否正确,示例:
> dotnet AspNetCore.Samples.dllHosting environment: ProdtctionContent root path: C:\Users\yuezh\Desktop\Demo\AspNetCore.SamplesNow listening on: http://*:5003Application started. Press Ctrl+C to shut down.
参考资料:
dotnet-publish
Working with multiple environments
How to set the hosting environment in ASP.NET Core
编辑推荐:
- ASP.NET Core 应用程序发布命令实例02-21
- SignalR简介及用法介绍02-21
- 一个很强大的控件--PropertyGrid02-21
- 微信公众平台SDK核心库的详细介绍02-21
- EF架构--FluentValidation的实际用法02-21
- win10硬盘被占用怎么办02-21
- 使用Action的模型绑定实例教程02-21
- win10录屏功能怎么用图文教程 微软win10录屏文件在02-21
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- ASP.NET Core 应用程序发布命令实例
ASP.NET Core 应用程序发布命令实例
26-02-21 - SignalR简介及用法介绍
SignalR简介及用法介绍
26-02-21 - 一个很强大的控件--PropertyGrid
一个很强大的控件--PropertyGrid
26-02-21 - 微信公众平台SDK核心库的详细介绍
微信公众平台SDK核心库的详细介绍
26-02-21 - win10硬盘被占用怎么办
win10硬盘被占用怎么办
26-02-21 - 使用Action的模型绑定实例教程
使用Action的模型绑定实例教程
26-02-21 - win10录屏功能怎么用图文教程 微软win10录屏文件在
win10录屏功能怎么用图文教程 微软win10录屏文件在
26-02-21 - win10网卡驱动出现问题解决方法
win10网卡驱动出现问题解决方法
26-02-21 - Unity C# GetSaveFileName()的实例详解
Unity C# GetSaveFileName()的实例详解
26-02-21 - 浅谈WPF之Binding表达式
浅谈WPF之Binding表达式
26-02-21
