web-dev-qa-db-ja.com

Visual StudioからAzure関数を公開しようとするとエラーが発生する

Visual Studioを使用して関数を公開しようとすると、次のエラーメッセージが表示されます。これを修正する方法はありますか?

System.AggregateException:1つ以上のエラーが発生しました。 ---> System.Exception:パブリッシュでエラーが発生しました。エラーの原因を特定できませんでした。詳細については、出力ログを確認してください。 ---内部例外スタックトレースの終わり--- System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout、CancellationToken cancelToken)at Microsoft.Publish.Framework。 Model.DefaultPublishSteps。<> c__DisplayClass26_0.b__2()at System.Threading.Tasks.Task`1.InnerInvoke()at System.Threading.Tasks.Task.Execute()---例外があった前の場所からのスタックトレースの終わりスロー--- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)at Microsoft.Publish.Framework.Model.DefaultPublishSteps.d__23.MoveNext()- -例外がスローされた以前の場所からのスタックトレースの終わり--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)at Microsoft.Pub lish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext()--->(内部例外#0)System.Exception:パブリッシュでエラーが発生しました。エラーの原因を特定できませんでした。詳細については、出力ログを確認してください。 <---

System.Exception:パブリッシュでエラーが発生しました。エラーの原因を特定できませんでした。詳細については、出力ログを確認してください。

===================

11
Recusiwe

解決策は、最新のSDKに更新することでした。

0
Recusiwe

お試しいただけますか this

Azure PortalからAzure Functionsアプリケーションの設定からWEBSITE_RUN_FROM_PACKAGE設定を完全に削除します。

5
Sajeetharan

これはVisual Studioのタイムアウトの問題です。つまり、コードやその他の設定が問題の原因ではありません。このエラーは、Visualがリリースにタイムアウト制限を設定するために発生します。 (ファイルが大きすぎるか、インターネットの速度が不安定です)

デプロイメントプロジェクトが大きすぎない場合は、ネットワークの速度が安定するまで待ってから実行してみてください。もちろん、 Zip deploy など、この問題を回避する他の展開方法を試すこともできます。

4
BowmanZhu

GitHubのようなプレイフォームでプロジェクトを共有しないと、特定のアドバイスを提供することは非常に困難です。非常に多くの変数があり、NuGETパッケージと参照の組み合わせが多数あるため、プロジェクトがこれを引き起こすような方法で競合する可能性がありますエラー。

特にv2関数では、この問題または同様の問題が何度か発生しました。関数の最大の要因の1つは、v1とv2の間で競合する概念です。

Visual Studioパブリッシュウィザードを使用してAzureでターゲットリソースを作成する場合、しばらくの間これに苦労していた場合、成功する傾向があります。他に何もない場合の概念の証明として、このプロセスに従うことをお勧めします。

このアドバイスはVS2017と2019でも同じように機能します

  1. 同じソリューションで、Visual Studioで新しい関数プロジェクトを作成します。
    • 元の関数の名前を複製する
  2. [〜#〜] new [〜#〜]Azureリソースに関数を発行し、発行ウィザードを使用して作成しますこのリソース。
  3. 公開が成功した場合:
    • 元のプロジェクトコードを新しいプロジェクトに移動する
    • 持ち込みたいnugetパッケージのバージョンに細心の注意を払ってください。それらとその依存関係はv2に準拠している必要があります
  4. 公開が[〜#〜]でない場合[〜#〜]成功
    • Visual Studioを最新にアップグレードしてください
    • Azure Toolsも最新にアップグレードされていることを確認してください

一般的な経験則として、Azure Functionsで一般的に成功するには:

  1. .Net Frameworkプロジェクトにはv1を使用します。または、参照プロジェクトまたはNuGETパッケージの[〜#〜] any [〜#〜]に.Net Fxがある場合依存関係。 (したがって、.Net 4 + ...またはそれ以外のもの。Net Core。)

    Functionsを使用して、これらの依存関係が複数のプロジェクトを対象とする場合でも、展開中にNuGET依存関係を評価するときに正しいプラットフォームを適切に検出できないため、展開が失敗する傾向があります。

  2. V2を使用[〜#〜] only [〜#〜]。Net Coreプロジェクトの場合、参照も。Net coreのみであることを確認してください=

コードを段階的にコンパイルして公開します。また、AzureDevOps、GitHub、またはその他のソースコードリポジトリを使用して、Functionsで頻繁にコードをチェックインします。 Functionsプロジェクトの初期段階では、複数の屈折とNuGETパッケージを頻繁に導入し、それらはローカルで機能しているように見えますが、デプロイすると機能しません。

  • ソースコードリポジトリを使用すると、新しいパッケージをインストールする前に変更をコミットしやすくなり、パッケージをインストールするとデプロイできないコードが発生した場合にロールバックできます。
  • 乱雑に見えますが、NuGetのバージョン管理のため、パッケージをインストールする前の状態に戻るため、そのパッケージをアンインストールするのは簡単ではなく、他のパッケージを非常に簡単にアップグレードした可能性があります。この変化するAzure環境では、多くのパッケージ作成者がアップグレードを選択しました.Net Frameworkと.Net Coreの間のリソース。ただし、常にうまくいくとは限りません。あるいは、Azure Functionsで競合を引き起こすいくつかの.Net Framework要素を保持する場合もあります。

役立つかもしれないいくつかの興味深い議論があります:

0
Chris Schaller