AZFW0108: Uitbreidingsbundel niet hersteld vóór de bouw

Artikel Value
Regel-ID AZFW0108
Categorie Sdk
Severity Warning

Oorzaak

Deze SDK-waarschuwing treedt op wanneer een project dat gebruikmaakt van Azure.Functions.Sdk wordt gebouwd zonder dat de post-restore-hook van de extensiebundel is aangeroepen. De post-restore hook wordt uitgevoerd wanneer het functieproject direct wordt hersteld. Het herstellen van een oplossingsbestand of een traverseringsproject roept de post-restore hook niet op.

Wanneer de post-restore hook niet succesvol wordt uitgevoerd, zal de functions SDK proberen de hook vóór de bouw uit te voeren. Omdat de post-restore hook zelf een nieuwe nuget restore uitvoert, kan het draaien als onderdeel van de build (en niet restore) problemen veroorzaken afhankelijk van de build-omgeving. Het wordt ten zeerste aanbevolen de stappen hier te volgen om ervoor te zorgen dat de post-restore-hook wordt uitgevoerd als onderdeel van dotnet restore.

Regelbeschrijving

De extensiebundel is een payload die wordt uitgerold samen met een functieapplicatie, die de extensies bevat die nodig zijn voor de runtime van de functies om de triggers en bindings van de functie-app mogelijk te maken.

Problemen oplossen

Optie 1: Herstel functie csproj direct

De post-restore hook wordt uitgevoerd wanneer het Functions-project direct wordt hersteld.

dotnet restore MyFunctionApp.csproj

Optie 2: Voeg een post-restore-hook toe voor het hersteldoel.

Het Restore doelwit draait alleen op het exacte project waar dotnet restore het doelwit op gericht is — het verspreidt zich niet naar gerefereerde projecten. Dit betekent dat de post-restore hook van de functie-app (die het extensieproject genereert) nooit wordt aangeroepen bij het herstellen van een oplossing of traversalproject.

Om dit op te lossen, voeg je het volgende doel toe zodat het wordt opgenomen in het project dat wordt hersteld. Deze target doorloopt recursief de items in ProjectReference en bereikt uiteindelijk de function app waar GenerateFunctionsExtensionProject is gedefinieerd.

<Target Name="_RecursiveGenerateFunctionsExtensionProject" AfterTargets="Restore">
  <MSBuild Projects="@(ProjectReference)" Targets="_RecursiveGenerateFunctionsExtensionProject"
    SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
  <MSBuild Projects="@(ProjectReference)" Targets="GenerateFunctionsExtensionProject"
    SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
</Target>

Waar je dit doel plaatst hangt af van hoe je restaureert:

  • Oplossingsbestanden (dotnet restore MySolution.sln): Voeg het doelwit toe aan een Directory.Solution.targets bestand naast je oplossingsbestand.
  • Project met één doorloop (dotnet restore dirs.proj): Voeg het doelproject toe aan Directory.Build.targets, ervan uitgaande dat dirs.proj dit importeert (de standaardinstelling). Als je een keten van traversalprojecten hebt (bijvoorbeeld dirs.projDirectory.Build.targetsMyFunctionApp.csproj), moet elk src/dirs.proj in de keten dit doel hebben — direct of via een eigen dirs.proj.

Wanneer waarschuwingen te onderdrukken

Onderdrukking wordt niet aanbevolen. Volg de stappen hier om de waarschuwing te corrigeren.