Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Item | Valor |
|---|---|
| ID da regra | AZFW0108 |
| Categoria | Sdk |
| Severity | Warning |
Cause
Esse aviso do SDK ocorre quando um projeto que usa Azure.Functions.Sdk é compilado sem que o gancho pós-restauração do bundle de extensões seja invocado. O hook de pós-restauração é executado quando o projeto da função é restaurado diretamente. Restaurar um arquivo de solução ou um projeto de percurso não invocará o gancho pós-restauração.
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, como o hook de pós-restauração executa outra restauração do NuGet por conta própria, ser executado como parte da compilação (e não da restauração) pode causar problemas, dependendo do ambiente de compilação. É altamente recomendável seguir as etapas aqui para garantir que o hook pós-restauração seja executado como parte de dotnet restore.
Descrição da Regra
O pacote de extensões é um pacote implantado junto com um aplicativo de função, que contém as extensões de que o runtime das funções precisa para dar suporte aos gatilhos e às associações do aplicativo de função.
Como corrigir
Opção 1: Restaurar a função csproj diretamente
O gancho pós-restauração 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 destino Restore é executado apenas no projeto exato ao qual dotnet restore se destina — ele não é propagado para projetos referenciados. Isso significa que o gancho pós-restauração do aplicativo de funções (que gera o projeto de extensões) nunca é invocado durante a restauração de uma solução ou de um projeto de percurso.
Para corrigir isso, adicione o seguinte alvo para que ele seja incluído no projeto a ser restaurado. Esse destino percorre recursivamente os itens ProjectReference, chegando por fim ao aplicativo de funções em que GenerateFunctionsExtensionProject é 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 esse alvo depende de como você restaura:
-
Arquivos de solução (
dotnet restore MySolution.sln): Adicione o alvo a umDirectory.Solution.targetsarquivo ao lado do seu arquivo de solução. -
Projeto de travessia única (
dotnet restore dirs.proj): Adicione o alvo aDirectory.Build.targets, pressupondo quedirs.projo importe (padrão). Se você tiver uma cadeia de projetos de percurso (por exemplo,dirs.proj→src/dirs.proj→MyFunctionApp.csproj), cadadirs.projna cadeia deverá ter esse destino — seja diretamente ou por meio de seu próprioDirectory.Build.targets.
Quando suprimir avisos
A supressão não é recomendada. Siga os passos aqui para corrigir o aviso.