AZFW0108: Pakiet rozszerzenia nie został przywrócony przed rozpoczęciem budowy

Towar Value
Identyfikator reguły AZFW0108
Kategoria Zestaw SDK
Severity Warning

Przyczyna

To ostrzeżenie SDK pojawia się, gdy projekt jest Azure.Functions.Sdk zbudowany bez wywołania pakietu rozszerzenia po przywróceniu. Hak po przywróceniu jest uruchamiany, gdy projekt funkcji jest bezpośrednio przywracany. Przywrócenie pliku rozwiązania lub projektu przesuwania się nie wywoła haka po przywróceniu.

Gdy hak po przywróceniu nie zostanie pomyślnie uruchomiony, SDK funkcji spróbuje uruchomić hak przed kompilacją. Jednak ponieważ hook po przywróceniu sam wykonuje kolejne przywracanie nugeta, uruchamianie jako część buildu (a nie restore) może powodować problemy w zależności od środowiska budowania. Zdecydowanie zaleca się postępowanie zgodnie z potem, aby upewnić się, że hak po przywróceniu działa jako część .dotnet restore

Opis reguły

Pakiet rozszerzenia to ładunek wdrożony równolegle z aplikacją funkcyjną, który zawiera rozszerzenia potrzebne przez czas działania funkcji do aktywowania wyzwalaczy i wiązań aplikacji funkcyjnej.

Jak rozwiązać problem

Opcja 1: Przywróć funkcję csproj bezpośrednio

Hak po przywróceniu zostanie uruchomiony, gdy projekt funkcji zostanie przywrócony bezpośrednio.

dotnet restore MyFunctionApp.csproj

Opcja 2: Dodaj hak po przywróceniu jako cel przywracania.

Cel Restore działa tylko na dokładnie tym projekcie, na który dotnet restore jest celowany — nie propaguje się do projektów referencyjnych. Oznacza to, że hak post-restore aplikacji funkcji (generujący projekt rozszerzenia) nigdy nie jest wywoływany podczas przywracania rozwiązania lub projektu przechodzenia.

Aby to naprawić, dodaj następujący cel, aby był uwzględniony w projekcie przywracanym. Ten cel rekurencyjnie przechodzi ProjectReference po elementach, ostatecznie docierając do aplikacji funkcyjnej, gdzie GenerateFunctionsExtensionProject jest zdefiniowany.

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

Miejsce umieszczenia tego celu zależy od sposobu przywracania:

  • Pliki rozwiązania (dotnet restore MySolution.sln): Dodaj cel do Directory.Solution.targets pliku obok pliku rozwiązania.
  • Projekt pojedynczego przejścia (dotnet restore dirs.proj): Dodaj cel do Directory.Build.targets, zakładając, dirs.proj że jest importowany (domyślnie). Jeśli masz łańcuch projektów przechodzenia (np. dirs.projsrc/dirs.projMyFunctionApp.csproj), każdy dirs.proj w łańcuchu musi mieć ten cel — bezpośrednio lub przez własny Directory.Build.targets.

Kiedy tłumić ostrzeżenia

Tłumienie nie jest zalecane. Postępuj zgodnie z instrukcjami tutaj , aby naprawić ostrzeżenie.