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
。
其实,我们使用 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.上記のコマンドには、EnvironmentName がリリースされました。これは何を意味しますか?たとえば、ASP.NET Core アプリケーションの
appsettings.json
構成は、テスト環境と運用環境で構成が異なります (データベース接続文字列など)。上記のリリース コマンドを使用すると、別の環境に合わせて appsettings.json
ファイルをダウンロードする必要があります。後で変更したい場合は、再度公開して更新する必要がありますが、これは非常に面倒です。 上記の問題を解決する方法は非常に簡単です。開発マシンまたはサーバーの ASPNETCORE_ENVIRONMENT
環境変数を設定した後、dotnet *.dll
を実行します。プログラムを開始すると、ASP.NET Core は、この環境変数に対応する appsettings.*.json
ファイル (appsettings.Production.json
など) を自動的に読み込みます。
launchSettings.json
サンプル構成など、ASPNETCORE_ENVIRONMENT
環境変数もデフォルトで設定されます: rrreee スタートアップ
のサンプル構成: rrreeeASPNETCORE_ENVIRONMENT
が Development
に設定されており、VS 2017 F5 を使用してプロジェクトをデバッグします。プロジェクトの下に appsettings.Development.json
構成ファイルが読み込まれて使用されます。このファイルが存在しない場合、ASP.NET Core は appsettings.json
を使用します。デフォルトでは code> 設定ファイルです。 それでは、サーバー上で ASPNETCORE_ENVIRONMENT
環境変数を設定するにはどうすればよいでしょうか?非常に簡単で、コマンドを入力するだけです。 PowerShell
コマンド: 🎜rrreee🎜 Windows セットアップ環境コマンドを実行するには、コマンド ライン dotnet *.dll
を再度開き、プロジェクトを開始して有効にする必要があります。 🎜dotnet *.dll
プロジェクトを開始すると、現在の ホスティング環境が表示されます。
を使用して正しいかどうかを確認します。例: 🎜🎜rrreee🎜🎜 参考文献: 🎜🎜🎜🎜dotnet-publish🎜🎜🎜🎜複数の環境での作業🎜🎜🎜🎜 ASP.NET Core でホスティング環境を設定する方法🎜🎜🎜以上がASP.NET Core アプリケーション公開コマンドの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。