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 应用程序发布命令实例的详细内容。