web-dev-qa-db-ja.com

.NET Core-Azure展開タスクで環境変数を設定

現在、_launchSettings.json_ファイルを使用してアプリケーションの環境変数を管理しようとしているため、_Setup.cs_ファイルはenv.IsDevelopmentEnvironment()などの方法で環境を管理できます。

VSTSでは、Azure Deploymentタスクで環境変数_ASPNETCORE_ENVIRONMENT_を設定するにはどうすればよいですか?または、ビルドステップで取得した_dotnet publish_タスクに入れる必要がありますか?

16
Adam Grande

展開プロセスをi等に保ちたい場合は、この展開手順を使用してAzure Webアプリに設定することをお勧めします。

https://marketplace.visualstudio.com/items?itemName=pascalnaber.PascalNaber-Xpirit-WebAppConfiguration

技術的にはweb.configにもリリース設定を追加します。これはコアアプリには必要ありませんが、重要なこととして、Azureホストの環境変数も設定します。

Startup.csで環境変数を使用するように指定している場合:

    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
                         .SetBasePath(env.ContentRootPath)
                         .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)                             
                         .AddEnvironmentVariables(); //override settings with environment variables

        var config = builder.Build();

        Configuration = config;

    }

リリース変数appsetting.ASPNETCORE_ENVIRONMENT = Releaseがある場合、KuduでPowerShellコンソールを使用してチェックすると、$ env:ASPNETCORE_ENVIRONMENTが実際に「Release」になることがわかります。

実際に、この拡張機能を使用して、一部のappsettings。{environment} .jsonファイルをトークン化する代わりに、リリース時にASPNETCORE_ENVIRONMENTと同様にすべてのappsettings.json変数をオーバーライドします。 VSTSリリース変数名で正しい命名規則を使用することで、環境変数でオーバーライドできます。

たとえば、appsettings.jsonの構造が次の場合:

{
  settings: {
    secret: {
      foo: "bar"
    }
  }
}

次のようなリリース変数でオーバーライドできます。

appsetting.settings:secret:foo = "bar"

次に、デプロイ後にAzure Webアプリで$ env:settings:secret:fooを確認します

ソースで追加の操作を行ったり、Web展開パッケージをzip圧縮したり、構成ファイルをトークン化したり、msdeployの前に再圧縮したりすることなく、環境固有の構成を取得しました。

5
Matthew

Replace Token 拡張機能をインストールしてから、ビルド/リリース定義にReplace Tokenタスクを追加できます。このタスクは、ファイル内の文字列を、ビルド/リリース定義で追加した変数値に置き換えることができます。

0