ASP.NET Core 애플리케이션 릴리스 명령:
dotnet publish [<PROJECT>] [-f|--framework] [-r|--runtime] [-o|--output] [-c|--configuration] [--version-suffix] [-v|--verbosity] [-h|--help]
Publish 샘플 명령(bin/release/netcoreapp1.1/publish
디렉터리에 생성됨): 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
环境变量呢?很简单,敲个命令就可以了。
命令行:
>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
启动项目,才会有效。
命令行:
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.
appsettings.json
구성은 테스트 환경과 프로덕션 환경(예: 데이터베이스 연결 문자열) 간에 서로 다른 구성을 갖습니다. 여전히 수동으로 복사해야 합니다. 다른 환경에 맞게 appsettings.json
파일을 다운로드하고 나중에 변경하려면 다시 게시하고 업데이트해야 하는데 이는 매우 번거로운 작업입니다. 위 문제를 해결하는 방법은 매우 간단합니다. 개발 머신이나 서버의 ASPNETCORE_ENVIRONMENT
환경 변수를 지정하고 나면 dotnet *.dll
을 실행합니다. 프로그램을 시작하면 ASP.NET Core는 appsettings.Production.json
과 같은 이 환경 변수에 해당하는 appsettings.*.json
파일을 자동으로 로드합니다.
launchSettings.json
구성 예와 같이 ASPNETCORE_ENVIRONMENT
환경 변수도 기본적으로 설정됩니다. rrreee 시작
샘플 구성: rrreeeASPNETCORE_ENVIRONMENT
가 Development
로 설정되어 있으므로 VS 2017 F5를 사용하여 프로젝트 아래에 appsettings.Development.json
구성 파일을 로드하고 사용하는 프로젝트를 디버그합니다. 이 파일이 없으면 ASP.NET Core는 appsettings.json을 사용합니다. 코드> 구성 파일은 기본적으로. <p></p>그럼 서버에서 <code>ASPNETCORE_ENVIRONMENT
환경 변수를 어떻게 설정하나요? 아주 간단합니다. 명령어만 입력하면 됩니다.
PowerShell
명령: 🎜rrreee🎜Windows 설정 환경 이후 명령을 실행하려면 명령줄 dotnet *.dll
을 다시 열어 프로젝트를 시작해야 적용됩니다. 🎜dotnet *.dll
프로젝트를 시작하면 현재 호스팅 환경을 볼 수 있습니다.
를 사용하여 올바른지 확인합니다. 예: 🎜🎜rrreee🎜🎜 참조: 🎜🎜🎜🎜dotnet-publish🎜🎜🎜🎜여러 환경 작업🎜🎜🎜🎜ASP.NET Core에서 호스팅 환경을 설정하는 방법 🎜🎜🎜위 내용은 ASP.NET Core 애플리케이션 게시 명령 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!