ホームページ >バックエンド開発 >C#.Net チュートリアル >ASP.NET Core アプリケーション公開コマンドの例

ASP.NET Core アプリケーション公開コマンドの例

零下一度
零下一度オリジナル
2017-06-24 10:46:452282ブラウズ

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 ディレクトリで生成): 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.*.json ファイル (appsettings.Production.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 を使用します。デフォルトでは 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。