Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
| Item | Valeur |
|---|---|
| Identificateur de la règle | AZFW0108 |
| Category | SDK |
| Severity | Warning |
Cause
Cet avertissement du SDK se produit lorsqu’un projet utilisant Azure.Functions.Sdk est généré sans que le hook post-restauration du bundle d’extensions soit invoqué. Le hook post-restauration s’exécute lorsque le projet de fonction est directement restauré. La restauration d’un fichier solution ou d’un projet de parcours n’invoquera pas le hook post-restauration.
Lorsque le hook post-restauration n’est pas exécuté avec succès, le SDK des fonctions tente d’exécuter le hook avant la compilation. Cependant, étant donné que le hook post-restauration effectue lui-même une autre restauration NuGet, le fait qu’il s’exécute dans le cadre de la génération (et non de la restauration) peut poser des problèmes selon l’environnement de génération. Il est fortement recommandé de suivre les étapes ici pour garantir que le hook post-restauration s’exécute dans le cadre de dotnet restore.
Description de la règle
Le bundle d’extensions est une charge utile déployée en même temps qu’une application de fonction, qui contient les extensions nécessaires à l’exécution des fonctions pour activer les déclencheurs et liaisons de l’application de fonctions.
Comment résoudre le problème
Option 1 : Restaurer directement la fonction csproj
Le hook post-restauration sera exécuté lorsque le projet Functions est restauré directement.
dotnet restore MyFunctionApp.csproj
Option 2 : Ajouter un crochet post-restauration pour la cible de restauration.
La Restore cible s’exécute uniquement sur le projet exact ciblé par dotnet restore — elle n’est pas transmise aux projets référencés. Cela signifie que le hook post-restauration de l’application de fonction (qui génère le projet d’extension) n’est jamais invoqué lors de la restauration d’une solution ou d’un projet de parcours.
Pour corriger cela, ajoutez la cible suivante afin qu’elle soit incluse dans le projet en cours de restauration. Cette cible parcourt récursivement les éléments ProjectReference, jusqu’à atteindre finalement l’application de fonction où GenerateFunctionsExtensionProject est défini.
<Target Name="_RecursiveGenerateFunctionsExtensionProject" AfterTargets="Restore">
<MSBuild Projects="@(ProjectReference)" Targets="_RecursiveGenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
<MSBuild Projects="@(ProjectReference)" Targets="GenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
</Target>
L’endroit où placer cette cible dépend de la manière dont vous restaurez :
-
Fichiers de solution (
dotnet restore MySolution.sln) : Ajoutez la cible à unDirectory.Solution.targetsfichier à côté de votre fichier de solution. -
Projet de traversée unique (
dotnet restore dirs.proj) : Ajouter la cible àDirectory.Build.targets, en supposantdirs.projqu’elle soit importée (par défaut). Si vous avez une chaîne de projets de traversée (par exemple,dirs.proj→Directory.Build.targets→MyFunctionApp.csproj), chaquesrc/dirs.projde la chaîne doit avoir cette cible — soit directement, soit via son propredirs.proj.
Quand supprimer les avertissements
La suppression n’est pas recommandée. Suivez les étapes ici pour corriger l’avertissement.