Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Item | Value |
|---|---|
| ID regola | AZFW0108 |
| Categoria | Sdk |
| Severity | Warning |
Cause
Questo avviso SDK si verifica quando un progetto che utilizza Azure.Functions.Sdk viene compilato senza che venga invocato il hook del bundle di estensione post-ripristino. L'hook successivo al ripristino viene eseguito quando il progetto di funzioni viene ripristinato direttamente. Ripristinare un file di soluzione o un progetto di attraversamento non attiverà il hook post-ripristino.
Quando l'hook post-ripristino non viene eseguito correttamente, l'SDK di Functions cercherà di eseguire l'hook prima della build. Tuttavia, poiché l'hook post-restore esegue autonomamente un ulteriore ripristino NuGet, la sua esecuzione durante la build (anziché durante il restore) può causare problemi, a seconda dell'ambiente di build. Si consiglia vivamente di seguire i passaggi qui per garantire che l'hook post-ripristino venga eseguito come parte di dotnet restore.
Descrizione regola
Il pacchetto di estensioni è un pacchetto distribuito insieme a un'app per le funzioni, che contiene le estensioni necessarie al runtime delle funzioni per abilitare i trigger e i binding dell'app per le funzioni.
Procedura di correzione
Opzione 1: Ripristinare direttamente la funzione csproj
L'hook di post-ripristino verrà eseguito quando il progetto Functions viene ripristinato direttamente.
dotnet restore MyFunctionApp.csproj
Opzione 2: aggiungere un hook post-ripristino per la destinazione di ripristino.
Il Restore target si attiva solo sul progetto esatto contro cui dotnet restore è rivolto — non si propaga ai progetti di riferimento. Ciò significa che il hook post-ripristino dell'app funzione (che genera il progetto di estensione) non viene mai invocato durante il ripristino di una soluzione o di un progetto di attraversamento.
Per risolvere questo problema, aggiungi il seguente obiettivo affinché venga incluso nel progetto in fase di ripristino. Questa destinazione attraversa in modo ricorsivo gli elementi ProjectReference, fino a raggiungere l'app per le funzioni in cui è definito GenerateFunctionsExtensionProject.
<Target Name="_RecursiveGenerateFunctionsExtensionProject" AfterTargets="Restore">
<MSBuild Projects="@(ProjectReference)" Targets="_RecursiveGenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
<MSBuild Projects="@(ProjectReference)" Targets="GenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
</Target>
Dove posizionare questo bersaglio dipende da come restauri:
-
File di soluzione (
dotnet restore MySolution.sln): Aggiungi il target a unDirectory.Solution.targetsfile accanto al file della soluzione. -
Progetto a singolo attraversamento (
dotnet restore dirs.proj): Aggiungi il target aDirectory.Build.targets, assumendodirs.projche lo importi (il valore predefinito). Se hai una catena di progetti di attraversamento (ad esempio,dirs.proj→src/dirs.proj→MyFunctionApp.csproj), ognunodirs.projdella catena deve avere questo obiettivo — direttamente o tramite il proprioDirectory.Build.targets.
Quando sopprimere gli avvertimenti
La soppressione non è raccomandata. Segui i passaggi qui per correggere l'avvertimento.