Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Item | Valor |
|---|---|
| ID da regra | AZFW0108 |
| Categoria | Sdk |
| Severity | Warning |
Cause
Este aviso do SDK ocorre quando um projeto que utiliza Azure.Functions.Sdk é compilado sem que o hook pós-restauro do pacote de extensões seja invocado. O gancho pós-restauro é executado quando o projeto de funções é restaurado diretamente. O restauro de um ficheiro de solução ou de um projeto transversal não invoca a rotina pós-restauro.
Quando o hook pós-restauração não é executado com sucesso, o SDK de funções tentará executar o hook antes da build. No entanto, uma vez que o hook pós-restauro efetua ele próprio outro restauro do NuGet, a sua execução como parte da compilação (e não do restauro) pode causar problemas, dependendo do ambiente de compilação. Recomenda-se vivamente seguir os passos indicados aqui para garantir que o hook pós-restauro é executado como parte de dotnet restore.
Descrição da regra
O pacote de extensões é um pacote implementado juntamente com uma aplicação de funções, que contém as extensões necessárias ao ambiente de execução das funções para ativar os acionadores e as associações da aplicação de funções.
Como Corrigir
Opção 1: Restaurar a função csproj diretamente
O gancho posterior ao restauro será executado quando o projeto de funções for restaurado diretamente.
dotnet restore MyFunctionApp.csproj
Opção 2: Adicionar gancho pós-restauração para o alvo de restauração.
O Restore alvo só corre no projeto exato contra o qual dotnet restore é direcionado — não se propaga para projetos referenciados. Isto significa que o hook pós-restauro da aplicação de funções (que gera o projeto de extensão) nunca é invocado ao restaurar uma solução ou um projeto de percurso.
Para resolver isto, adicione o seguinte objetivo para que seja incluído no projeto em restauro. Este destino percorre recursivamente os itens ProjectReference, até chegar à aplicação de função onde GenerateFunctionsExtensionProject está definido.
<Target Name="_RecursiveGenerateFunctionsExtensionProject" AfterTargets="Restore">
<MSBuild Projects="@(ProjectReference)" Targets="_RecursiveGenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
<MSBuild Projects="@(ProjectReference)" Targets="GenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
</Target>
Onde colocar este alvo depende de como restaurar:
-
Ficheiros de solução (
dotnet restore MySolution.sln): Adicione o alvo a umDirectory.Solution.targetsficheiro ao lado do seu ficheiro de solução. -
Projeto de percurso único (
dotnet restore dirs.proj): Adicionar o destino aDirectory.Build.targets, assumindodirs.projque o importa (o padrão). Se tiver uma cadeia de projetos de travessia (por exemplo,dirs.proj→Directory.Build.targets→MyFunctionApp.csproj), cadasrc/dirs.projna cadeia tem de ter este destino — seja diretamente ou através do seu própriodirs.proj.
Quando Suprimir Avisos
A supressão não é recomendada. Siga os passos aqui para corrigir o aviso.