Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| 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 doDirectory.Solution.targetspliku obok pliku rozwiązania. -
Projekt pojedynczego przejścia (
dotnet restore dirs.proj): Dodaj cel doDirectory.Build.targets, zakładając,dirs.projże jest importowany (domyślnie). Jeśli masz łańcuch projektów przechodzenia (np.dirs.proj→src/dirs.proj→MyFunctionApp.csproj), każdydirs.projw łańcuchu musi mieć ten cel — bezpośrednio lub przez własnyDirectory.Build.targets.
Kiedy tłumić ostrzeżenia
Tłumienie nie jest zalecane. Postępuj zgodnie z instrukcjami tutaj , aby naprawić ostrzeżenie.