web-dev-qa-db-ja.com

asp.netのコアアプリケーションを公開するために考慮されるようにASPNETCORE_ENVIRONMENTを設定する方法?

私のローカルファイルシステムに私のasp.netコアWebアプリケーションを公開するとき、それは常にproduction-configと値= "Production"を持つASPNETCORE_ENVIRONMENT変数を取ります。

どのようにそしてどこで私はそれがデバッグのためだけでなく考慮されるようにASPNETCORE_ENVIRONMENT変数の値を設定しなければなりません、しかしまた出版のために?私はすでに成功せずに次のオプションを試してみました:

  • windowsの設定で
  • .pubxmlファイル内
  • launchSettings.json内
  • project.json内
58
Dario

オプション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>
39
Sanket

ビジュアルスタジオIDEで設定する簡単な方法。

プロジェクト>プロパティ>デバッグ>環境変数

enter image description here

19

上記のオプション以外にも、他にもいくつかの解決策があります。

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

18
Abhinav Galodha

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属性で指定されたプロセスの環境変数を指定できます。このセクションで設定された環境変数は、プロセスのシステム環境変数よりも優先されます。

12
David Pine

最新バージョンの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

5
vijayrkn