>백엔드 개발 >C#.Net 튜토리얼 >ASP.NET Core 애플리케이션 게시 명령 예

ASP.NET Core 애플리케이션 게시 명령 예

零下一度
零下一度원래의
2017-06-24 10:46:452303검색

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

ASP.NET Core 애플리케이션 게시 명령 예

其实,我们使用 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.

위 명령은 EnvironmentName이 공개되었는데, 그게 무슨 뜻인가요? 예를 들어 ASP.NET Core 애플리케이션의 appsettings.json 구성은 테스트 환경과 프로덕션 환경(예: 데이터베이스 연결 문자열) 간에 서로 다른 구성을 갖습니다. 여전히 수동으로 복사해야 합니다. 다른 환경에 맞게 appsettings.json 파일을 다운로드하고 나중에 변경하려면 다시 게시하고 업데이트해야 하는데 이는 매우 번거로운 작업입니다.
위 문제를 해결하는 방법은 매우 간단합니다. 개발 머신이나 서버의 ASPNETCORE_ENVIRONMENT 환경 변수를 지정하고 나면 dotnet *.dll을 실행합니다. 프로그램을 시작하면 ASP.NET Core는 appsettings.Production.json과 같은 이 환경 변수에 해당하는 appsettings.*.json 파일을 자동으로 로드합니다.

ASP.NET Core 애플리케이션 게시 명령 예
  • 실제로 우리는 VS 2017 F5 디버깅을 사용합니다 프로젝트 중에 ASP.NET Core 애플리케이션의 launchSettings.json 구성 예와 같이 ASPNETCORE_ENVIRONMENT 환경 변수도 기본적으로 설정됩니다.

    rrreee
  • 시작 샘플 구성:

    rrreee
  • 위 구성에서는 ASPNETCORE_ENVIRONMENTDevelopment로 설정되어 있으므로 VS 2017 F5를 사용하여 프로젝트 아래에 appsettings.Development.json 구성 파일을 로드하고 사용하는 프로젝트를 디버그합니다. 이 파일이 없으면 ASP.NET Core는 appsettings.json을 사용합니다. 코드> 구성 파일은 기본적으로. <p></p>그럼 서버에서 <code>ASPNETCORE_ENVIRONMENT 환경 변수를 어떻게 설정하나요? 아주 간단합니다. 명령어만 입력하면 됩니다.
  • 1. Windows 서버 설정

명령줄: 🎜🎜rrreee🎜🎜또는 (관리자 권한 필요) 🎜🎜rrreee🎜🎜PowerShell 명령: 🎜rrreee🎜Windows 설정 환경 이후 명령을 실행하려면 명령줄 dotnet *.dll을 다시 열어 프로젝트를 시작해야 적용됩니다. 🎜

2. MacOS/Linux 서버 설정

🎜명령줄: 🎜🎜rrreee🎜🎜dotnet *.dll 프로젝트를 시작하면 현재 호스팅 환경을 볼 수 있습니다. 를 사용하여 올바른지 확인합니다. 예: 🎜🎜rrreee🎜🎜 참조: 🎜🎜🎜🎜dotnet-publish🎜🎜🎜🎜여러 환경 작업🎜🎜🎜🎜ASP.NET Core에서 호스팅 환경을 설정하는 방법 🎜🎜🎜

위 내용은 ASP.NET Core 애플리케이션 게시 명령 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.