Visual studio 尝试从Visual Studio发布azure函数时出错

Visual studio 尝试从Visual Studio发布azure函数时出错,visual-studio,azure,azure-functions,Visual Studio,Azure,Azure Functions,当我尝试使用VisualStudio发布我的函数时,我收到以下错误消息,你知道如何解决这个问题吗 System.AggregateException:发生一个或多个错误。--> System.Exception:发布遇到错误。我们无法 确定错误的原因。查看输出日志了解更多信息 细节。--内部异常堆栈跟踪的结束---at System.Threading.Tasks.Task.ThrowifeException(布尔值 includeTaskCanceledExceptions)位于 System

当我尝试使用VisualStudio发布我的函数时,我收到以下错误消息,你知道如何解决这个问题吗

System.AggregateException:发生一个或多个错误。--> System.Exception:发布遇到错误。我们无法 确定错误的原因。查看输出日志了解更多信息 细节。--内部异常堆栈跟踪的结束---at System.Threading.Tasks.Task.ThrowifeException(布尔值 includeTaskCanceledExceptions)位于 System.Threading.Tasks.Task.Wait(Int32毫秒, 取消令牌(取消令牌)位于 Microsoft.Publish.Framework.Model.DefaultPublishSteps.c__DisplayClass26_0.b__2() 位于System.Threading.Tasks.Task`1.InnerInvoke()的 System.Threading.Tasks.Task.Execute() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.Publish.Framework.Model.DefaultPublishSteps.d_u23.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d_u213.MoveNext() --->(内部异常#0)系统。异常:发布遇到错误。我们无法确定错误的原因。检查
输出日志以了解更多详细信息 这是一个VisualStudio超时问题,这意味着代码和其他一些设置不是问题的关键。发生此错误的原因是Visual为发布设置了超时限制。(文件太大或internet速度不稳定)

如果部署项目不是太大,可以等到网络速度稳定后再尝试运行。当然,您也可以尝试其他部署方法来避免此问题,例如。

您可以尝试吗

从Azure功能中完全从\u包设置中删除网站\u运行\u Azure门户中的应用程序设置

如果不在GitHub这样的游戏形式上共享您的项目,我们就很难提供具体的建议,因为有太多的变量,太多的NuGET包和引用组合,您的项目可能会发生冲突,从而导致此错误

特别是对于v2函数,我已经多次遇到过这个问题或类似的问题。功能的最大因素之一是v1和v2之间的竞争概念

当您使用Visual Studio发布向导在Azure中创建目标资源时,它往往会获得更大的成功,如果您已经为此挣扎了一段时间,我建议您遵循此过程,如果没有其他任何问题,则作为概念证明:

这一建议在2017年和2019年同样有效

  • 在visual studio中以相同的解决方案创建新的函数项目。
    • 复制原始函数的名称
  • 将函数发布到新的Azure资源,使用发布向导创建此资源
  • 如果发布成功:
    • 将原始项目代码移到新项目中
    • 请密切关注您希望带来的nuget软件包的版本,它们及其依赖项需要与v2兼容
  • 如果发布未成功
    • 确保将Visual Studio升级到最新版本
    • 确保您的Azure工具也已升级到最新版本
  • 作为一般的经验法则,对于Azure功能的一般成功:

  • 将v1用于.Net Framework项目,或者如果参考项目或NuGET软件包中的任何项目具有.Net Fx依赖项,请使用v1。(因此,.NET4+…或任何不是.NETCore的东西。) 即使这些依赖项针对多个项目,由于在部署期间评估NuGET依赖项时无法正确检测到正确的平台,因此部署功能也会失败

  • v2仅用于.Net核心项目,请确保引用也仅用于.Net核心项目
  • 以增量方式编译和发布代码,也可以使用AzureDevOps或GitHub或其他源代码存储库,经常使用函数签入代码。在功能项目的早期阶段,我们经常引入多个引用和NuGET包,它们似乎在本地工作,但在我们部署时却无法工作

    • 使用源代码repo可以轻松地在安装新包之前提交更改,如果安装包导致无法部署代码,则可以回滚
    • 这看起来很混乱,但由于NuGet版本控制,回到安装包之前的状态并不简单,因为卸载了该包,它可能很容易升级了其他包,在这个不断变化的Azure环境中,许多包作者选择在.Net Framework和.Net Core之间升级他们的资源,而且他们并不总是做得很好,或者有时会保留一些会导致Azure功能冲突的.Net framework元素
    有一些有趣的讨论可能会有所帮助:


    解决方案是更新到最新的SDK。

    我遇到了同样的奇怪问题-它是由我的代码中的错误引起的-

    我的代码中有
    #if DEBUG#else#if
    语句,因此在我的计算机上调试正常,但发布(带有发布配置文件)失败


    单击“输出”选项卡,您将看到真正的问题。

    默认超时为100秒。所以发布会在100秒后失败。 在上传blob和thi时,我在自己的代码中也遇到了同样的问题