私のローカルファイルシステムに私のasp.netコアWebアプリケーションを公開するとき、それは常にproduction-configと値= "Production"を持つASPNETCORE_ENVIRONMENT変数を取ります。
どのようにそしてどこで私はそれがデバッグのためだけでなく考慮されるようにASPNETCORE_ENVIRONMENT変数の値を設定しなければなりません、しかしまた出版のために?私はすでに成功せずに次のオプションを試してみました:
オプション1:
WindowsでASPNETCORE_ENVIRONMENT環境変数を設定するには、
コマンドライン - setx ASPNETCORE_ENVIRONMENT "Development"
PowerShell - $Env:ASPNETCORE_ENVIRONMENT = "Development"
他のOSについてはこれを参照してください - https://docs.Microsoft.com/ja-jp/aspnet/core/fundamentals/environments
オプション2:
web.config
を使用してASPNETCORE_ENVIRONMENTを設定したい場合は、このようにaspNetCore
を追加します。
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.Microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApplication.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
上記のオプション以外にも、他にもいくつかの解決策があります。
1。プロジェクトファイル(.CsProj)ファイルの修正
MSBuildはEnvironmentName
プロパティをサポートしています。これは、デプロイしたい環境に合わせて正しい環境変数を設定するのに役立ちます。環境名は、公開フェーズ中にweb.configに追加されます。
プロジェクトファイル(* .csProj)を開き、次のXMLを追加するだけです。
<!-- Custom Property Group added to add the Environment name during publish
The EnvironmentName property is used during the publish for the Environment variable in web.config
-->
<PropertyGroup Condition=" '$(Configuration)' == '' Or '$(Configuration)' == 'Debug'">
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' != '' AND '$(Configuration)' != 'Debug' ">
<EnvironmentName>Production</EnvironmentName>
</PropertyGroup>
上記のコードは、デバッグ構成の場合、または構成が指定されていない場合、環境名をDevelopment
として追加します。その他の構成の場合、生成されたweb.configファイルの環境名はProduction
になります。もっと詳しく ここ
2。発行プロファイルにEnvironmentNameプロパティを追加する
公開プロファイルに<EnvironmentName>
プロパティを追加することもできます。 Properties/PublishProfiles/{profilename.pubxml}
にある発行プロファイルファイルを開きます。これにより、プロジェクトの発行時にweb.configで環境名が設定されます。もっと詳しく ここ
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
3。 dotnet publishを使ったコマンドラインオプション
さらに、プロパティEnvironmentName
をコマンドラインオプションとしてdotnet publish
コマンドに渡すことができます。次のコマンドは、web.configファイルに環境変数をDevelopment
として含めます。
dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
web.config
を使用して、 ドキュメントに記載されている手順 に従ってください。
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\aspnetcore-stdout">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
<environmentVariable name="CONFIG_DIR" value="f:\application_config" />
</environmentVariables>
</aspNetCore>
他の環境変数も設定できることに注意してください。
ASP.NETコアモジュールでは、aspNetCore要素の下のenvironmentVariablesコレクション要素の1つ以上のenvironmentVariable子要素でそれらを指定することによって、processPath属性で指定されたプロセスの環境変数を指定できます。このセクションで設定された環境変数は、プロセスのシステム環境変数よりも優先されます。
最新バージョンのdotnet cli(2.1.400以上)では、このmsbuildプロパティ$(EnvironmentName)
を設定するだけで、公開ツールが環境名とともにweb.configにASPNETCORE_ENVIRONMENTを追加します。
また、XDTサポートは2.2.100-preview1から利用可能です。
サンプル: https://github.com/vijayrkn/webconfigtransform/blob/master/README.md