web-dev-qa-db-ja.com

Azure Webアプリケーションでターゲットフレームワークを変更します

Azure Web Appを使用してAzure To Azure To Azure To Asureをホストしたいと思います。 Azure PortalでAzure Webアプリを作成するときは、設定の1つが "Runtime Stack"です。この場合、マイコードが現在使用されているフレームワークに一致するように、「.NET CORE 2.1」に設定します。ただし、Webアプリケーションが作成されると、Azure Portalのどこにでもこの設定を編集するオプションが表示されませんので、将来必要に応じて変更しますか。

たとえば、ASP.NET CORE 2.2を使用するようにアプリケーションコードを後で更新する場合は、Azure Webアプリのランタイムスタックを ".NET CORE 2.2"に変更するのでしょうか。 Azureポータルの一部の領域でこれを編集するための設定はありますか?または、Azure Webアプリはコード(おそらく.csprojファイル)を調べて、ターゲットフレームワークを内部的に自動的に更新し、とにかく任意の設定を無視しますか?または、Webアプリを削除して正しい設定で新しいものを作成する必要がありますか? (Webアプリを削除して新しいものを作成する必要がある場合は、この状況を計画するためのいくつかの推奨アプローチがあり、停止時間を短縮しますか?本番スロットから新しいランタイムスタックにステージングスロットを更新することは可能です。それからスワップをしなさい?)

6
Gary

ステップ1 - プロジェクトのターゲットフレームワークを設定します

プロジェクトでは、ターゲットフレームワークを必要なものに設定します。 VSで、プロジェクト名を右クリックし、[プロパティ]を選択してから、ターゲットフレームワークを指定します。

enter image description here

または.csprojファイルを直接編集してターゲットフレームワークを指定します。<TargetFramework>netcoreapp3.1</TargetFramework>

ステップ2 - 公開のターゲットフレームワークを設定する

プロジェクトを公開するときは、ターゲットフレームワークもそこに置きます。 VSで、プロジェクト名を右クリックし、公開を選択し、パブリッシュウィザードでターゲットフレームワークを指定します。

enter image description here

この設定は.pubxmlファイルにも反映されます(そして構文<TargetFramework>netcoreapp3.1</TargetFramework>を使用している場合は代わりに編集できます)。

ステップ3 - あなたが必要なランタイムがazure上に存在することを確認する

プロジェクトと公開設定で指定されたランタイムバージョンがazure上に存在する場合は、バージョンが自動的に使用されます。だから私たちはそれが存在するかどうかを確認する必要があります。

Alexは彼の答えでLinuxホストでこれを行う方法を説明しましたが、それはAzure PortalのWindowsホストではWindowsホストには表示されません)。

enter image description here

その一方で、Kuduコンソールは両方のオペレーティングシステムで機能します。 KUDUはhttps://<app_name>.scm.azurewebsites.netで到達することができます。ランタイムバージョンのkuduを調べるには、いくつかの異なる方法がいくつかあります -

オプション1. [REST API]セクションの[ランタイムバージョン]リンクをクリックします。

enter image description here サポートされているDotNetCoreバージョン(およびNodeJSバージョン、OSバージョンなど)を表示します。

オプション2. [Debug Console - > CMD]をクリックして、kuduコマンドプロンプトを起動します。 dotnet --list-runtimesを入力します。

enter image description here

dotnet --list-sdksを使用しないでください.SDKは、SDKではなくランタイムではなく、SDKは実行時です。

手順4 - azureにランタイムが存在しない場合

これは、使用しているランタイムがまだプレビュー内にある場合に当てはまる可能性があります。あなたはアプリケーションであなた自身の.NETコアバージョンを埋め込むことも、拡張子を使用することもできます。これらは彼の答えでSebastienによって記述されています。

ステップ5 - アプリを公開する

既存のWebアプリを削除して新しいものを作成する必要はありません。以前に下位のターゲットフレームワークを使用していた古いアプリに公開できます。

0
Gary

少なくともLinuxホストでは、ランタイムスタックはApp Service Settingsを介して使用できます。ただ複数のプロパティに分割されます。

General Settings

よりテクニカルノートでは、LinuxFxVersionからアクセスできます。

    "siteProperties": {
      "metadata": null,
      "properties": [
        {
          "name": "LinuxFxVersion",
          "value": "DOTNETCORE|2.1"
        },
        {
          "name": "WindowsFxVersion",
          "value": null
        }
      ],
      "appSettings": null
    },
 _

例えば。ビア Azure CLI

az webapp config set -g MyResourceGroup -n MyUniqueApp --linux-fx-version DOTNETCORE|2.1
 _

あなたがダウンタイムを避けたいのなら、あなたは言及されているようなスロットを使うべきです。すべてのアプリの展開と同様に、展開中に短いほど遅いアプリケーションが遅くなります。

Azure Pipelinesのようなものを使用する場合は、1つのGOですべてを変更できます。 Azure App Service Deploy Task アプリケーションAn Set Runtimeスタックを同時にデプロイすることを可能にします。

スロットは互いに非常に独立しているので、スロットに応じて異なるランタイムスタックを持つことができます。

3
Alex AIT

前の回答は正しいですが、アプリケーション設定の設定でランタイムバージョンを管理できます。

ただし、アプリケーションで独自の.NET COREバージョンを埋め込むためにdotnet publish --runtime win-x86を実行することもできます。それは何らかのオーバーヘッドを追加しますが、あなたはランタイムバージョンを制御します。

ネットコアRIDカタログ

3番目のオプションは、サイト拡張機能をインストールすることです

enter image description here

1