Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Objekt | Value |
|---|---|
| Regel-ID | AZFW0108 |
| Kategori | Sdk |
| Severity | Varning |
Orsak
Denna SDK-varning uppstår när ett projekt som använder Azure.Functions.Sdk byggs utan att tilläggspaketets poståterställningskrok anropas. Post-restore-hooken körs när funktionsprojektet återställs direkt. Att återställa en lösningsfil eller ett traversal-projekt innebär inte att post-restore-hooken anropas.
När post-restore-hooken inte körs korrekt försöker Functions SDK köra hooken före bygget. Men eftersom post-restore-hooken själv utför en ny NuGet-återställning kan det orsaka problem att köra den som en del av builden (och inte restore), beroende på byggmiljön. Det rekommenderas starkt att följa stegen här för att säkerställa att post-restore-hooken körs som en del av dotnet restore.
Regelbeskrivning
Tilläggspaketet är ett paket som distribueras tillsammans med en funktionsapp och som innehåller de tillägg som funktionskörningen behöver för att aktivera funktionsappens utlösare och bindningar.
Så här åtgärdar du
Alternativ 1: Återställ funktionen csproj direkt
Hooken efter återställning körs när funktionsprojektet återställs direkt.
dotnet restore MyFunctionApp.csproj
Alternativ 2: Lägg till en post-restore-hook på återställningsmålet.
Målet Restore körs bara på det exakta projekt som dotnet restore riktas mot – det sprider sig inte till refererade projekt. Detta innebär att funktionsappens efteråterställningskrok (som genererar tilläggsprojektet) aldrig anropas vid återställning av en lösning eller traverseringsprojekt.
För att åtgärda detta, lägg till följande mål så att det ingår i det projekt som återställs. Detta mål går rekursivt igenom ProjectReference-objekt och når slutligen funktionsappen där GenerateFunctionsExtensionProject definieras.
<Target Name="_RecursiveGenerateFunctionsExtensionProject" AfterTargets="Restore">
<MSBuild Projects="@(ProjectReference)" Targets="_RecursiveGenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
<MSBuild Projects="@(ProjectReference)" Targets="GenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
</Target>
Var du ska placera detta mål beror på hur du återställer:
-
Lösningsfiler (
dotnet restore MySolution.sln): Lägg till målet i enDirectory.Solution.targetsfil bredvid din lösningsfil. -
Projekt med enkel genomgång (
dotnet restore dirs.proj): Lägg till målet iDirectory.Build.targets, förutsatt attdirs.projimporterar det (som standard). Om du har en kedja av traverseringsprojekt (t.ex.dirs.proj→src/dirs.proj→MyFunctionApp.csproj), måste varjedirs.proji kedjan ha detta mål — antingen direkt eller genom sitt egetDirectory.Build.targets.
När man ska undertrycka varningar
Suppression rekommenderas inte. Följ stegen här för att åtgärda varningen.