Erro ao tentar publicar uma função azul do Visual Studio

13

Recebo a seguinte mensagem de erro quando tento publicar minha função usando o Visual Studio, alguma idéia de como corrigir isso?

System.AggregateException: um ou mais erros. ---> System.Exception: a publicação encontrou um erro. Não foi possível determinar a causa do erro. Verifique o log de saída para mais detalhes. --- Fim do rastreamento da pilha de exceção interna --- em System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) em System.Threading.Tasks.Task.Wait (Int32 millisecondsTimeout, CancellationToken cancellationToken) em Microsoft.Publish.Framework. Model.DefaultPublishSteps. <> C__DisplayClass26_0.b__2 () em System.Threading.Tasks.Task`1.InnerInvoke () em System.Threading.Tasks.Task.Execute () --- Fim do rastreamento de pilha do local anterior onde a exceção foi thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (tarefa Task) em System.Runtime.CompilerServices. TaskAwaiter.HandleNonSuccessAndDebuggerNotification (tarefa Task) em Microsoft.Publish.Framework.Model.DefaultPublishSteps.d__23.MoveNext () --- Rastreio de fim de pilha do local anterior em que a exceção foi lançada --- em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Tarefa de tarefa) em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (tarefa de tarefa) em Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Exceção interna # 0) System.Exception: Publish has encontrou um erro. Não foi possível determinar a causa do erro. Verifique o log de saída para mais detalhes. <--- MoveNext () --- Fim do rastreio de pilha do local anterior onde a exceção foi lançada --- em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (tarefa de tarefa) em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task) na Microsoft .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Exceção interna # 0) System.Exception: Publish encontrou um erro. Não foi possível determinar a causa do erro. Verifique o log de saída para mais detalhes. <--- MoveNext () --- Fim do rastreio de pilha do local anterior onde a exceção foi lançada --- em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (tarefa de tarefa) em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task) na Microsoft .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Exceção interna # 0) System.Exception: Publish encontrou um erro. Não foi possível determinar a causa do erro. Verifique o log de saída para mais detalhes. <--- d__213.MoveNext () ---> (Exceção interna # 0) System.Exception: A publicação encontrou um erro. Não foi possível determinar a causa do erro. Verifique o log de saída para mais detalhes. <--- d__213.MoveNext () ---> (Exceção interna # 0) System.Exception: A publicação encontrou um erro. Não foi possível determinar a causa do erro. Verifique o log de saída para mais detalhes. <---

System.Exception: Publicar encontrou um erro. Não foi possível determinar a causa do erro. Verifique o log de saída para obter mais detalhes.

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

Recusiwe
fonte
Estou com um problema semelhante no momento no Visual Studio 2019 - embora esteja tentando publicar na pasta no meu caso. Ainda estou tentando rastrear o que está causando isso, mas tentei até agora no meu caso: 1.) Limpar o cache do NuGet, 2.) Remover as pastas bin e obj 3.) Crie um novo perfil de pasta Além disso, o que você vê no arquivo de log de saída? Alguma coisa útil?
VirtualValentin
Você já tentou implantá-lo através do Git viaDeployment Center
Pavle

Respostas:

8

Você pode tentar this

Remova a configuração WEBSITE_RUN_FROM_PACKAGE inteiramente das Configurações de Aplicativo do Azure Functions no Portal do Azure.

Sajeetharan
fonte
2
Eu fiz isso sem nenhum sucesso.
Recusiwe
Isso funcionou para mim. Não tenho certeza se está relacionado a 'reiniciar' a Função do Azure quando as alterações no ambiente são feitas ou se é uma configuração de bloqueio.
Justin Neff
5

Esse é um problema de tempo limite do Visual Studio, o que significa que seu código e algumas outras configurações não são a chave para o problema. Este erro ocorre porque o Visual define um limite de tempo limite na liberação. (O arquivo é muito grande ou a velocidade da Internet é instável)

Se o seu projeto de implantação não for muito grande, você poderá esperar até que a velocidade da rede esteja estável antes de tentar executá-lo. Obviamente, você também pode tentar outros métodos de implantação para evitar esse problema, como a implantação zip .

BowmanZhu
fonte
Eu tive sucesso implantando usando zipdeploy. No entanto, quando verifico o conteúdo do aplicativo, ele é atualizado, mas quando executo a função, parece executar a versão antiga?
Recusiwe
@Recusiwe O que significa 'executar versão antiga'? Você quer dizer que a versão da função azul foi alterada? O zip deploy resolveu esse problema?
BowmanZhu
Com "versão antiga", quero dizer a última versão que pude publicar no VS, e não a zip-deployed. O conteúdo do aplicativo contém o código do zip implantado, mas não o executa. Ele roda uma versão antiga.
Recusiwe
@Recusiwe Qual versão de função você está usando agora? Qual IDE você está usando agora? E qual a montagem do seu projeto? (O .csprojarquivo) Eu já enfrentei um erro semelhante antes, parece um problema de montagem dessa vez. Às vezes, esse erro ocorre apenas no Visual Studio 2019. Você pode tentar usar o Visual Studio 2017 para ver se essa exceção ainda existe. Se você estiver usando o Visual Studio 2017, você usa o Resharper? Estou tentando reproduzir seu erro e encontrar um erro semelhante, mas não tenho certeza se isso está relacionado à sua situação.
BowmanZhu
Aplicativo de função v. 2 e Visual Studio 16.4.1
Atualizado 17/12/19
0

Sem compartilhar seu projeto em uma forma de jogo como o GitHub, é realmente difícil oferecer conselhos específicos, há tantas variáveis, tantas combinações de pacotes e referências do NuGET que seu projeto pode ter esse conflito de maneira a causar isso. erro.

Especialmente com as funções da v2, já enfrentei esse problema ou similares várias vezes. Um dos maiores fatores das funções são os conceitos concorrentes entre v1 e v2.

Quando você usa o assistente de publicação do Visual Studio para criar o recurso de destino no Azure, ele tende a ter maior sucesso. Se você estiver enfrentando problemas há algum tempo, sugiro que você siga esse processo, como prova de conceito, se nada mais:

Este conselho funciona igualmente bem no VS2017 e 2019

  1. Crie um novo projeto de função no visual studio, na mesma solução.
    • Replicar o nome da sua função original
  2. Publique a função em um NOVO recurso do Azure, use o assistente de publicação para criar esse recurso.
  3. Se a publicação for bem-sucedida:
    • Mova o código do projeto original para o novo projeto
    • Preste muita atenção às versões dos pacotes de nuget que você deseja transmitir, pois elas e suas dependências precisarão ser compatíveis com a v2
  4. Se a publicação NÃO for bem-sucedida
    • Certifique-se de atualizar seu Visual Studio para o mais recente
    • Verifique se as Ferramentas do Azure também estão atualizadas para as mais recentes

Como regra geral, para obter sucesso geral com o Azure Functions:

  1. Use v1 para projetos do .Net Framework, ou se QUALQUER dos seus projetos de referência ou pacotes do NuGET tiverem dependências do .Net Fx. (então .Net 4 + ... ou qualquer coisa que não seja .Net Core .)

    Mesmo quando essas dependências têm como alvo vários projetos, com o Functions, a implantação tende a falhar, pois não é capaz de detectar corretamente a plataforma correta ao avaliar as dependências do NuGET durante a implantação.

  2. Use APENAS v2 para projetos .Net Core , verifique se suas referências também são apenas .Net core

Compile e publique seu código de forma incremental, também use o AzureDevOps ou o GitHub ou outros repositórios de código-fonte para fazer check-in do seu código frequentemente com o Functions. Nos estágios iniciais de um projeto de Funções, geralmente trazemos várias referências e pacotes NuGET e eles parecem funcionar localmente, mas não quando implantamos.

  • o uso de um repositório de código-fonte facilita a confirmação de alterações antes da instalação de novos pacotes e reversão, se a instalação do pacote resultar em um código não implementável.
  • Parece confuso, mas, devido ao versionamento do NuGet, voltando ao estado antes de instalar um pacote que não é tão desinstalado quanto ele, ele pode ter atualizado com facilidade outros pacotes e, nesse ambiente do Azure em mudança, muitos autores de pacotes optaram por atualizar seus recursos entre .Net Framework e .Net Core, e nem sempre eles foram bem-sucedidos ou, às vezes, mantêm alguns elementos da estrutura .Net que causarão conflitos nas Funções do Azure.

Existem algumas discussões interessantes que podem ajudar:

Chris Schaller
fonte
0

A solução foi atualizar para o SDK mais novo.

Recusiwe
fonte
Isso não funcionou para mim.
Justin Neff