Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Element | Wert |
|---|---|
| Regel-ID | AZFW0108 |
| Kategorie | Sdk |
| Severity | Warning |
Ursache
Diese SDK-Warnung tritt auf, wenn ein Projekt mit Azure.Functions.Sdk gebaut wird, ohne dass der Erweiterungsbundle-Post-Restore-Hook aufgerufen wird. Der Post-Restore-Hook wird ausgeführt, wenn das Funktionsprojekt direkt wiederhergestellt wird. Das Wiederherstellen einer Lösungsdatei oder eines Durchlaufprojekts ruft den Nach-Wiederherstellungs-Hook nicht auf.
Wenn der Post-Restore-Hook nicht erfolgreich ausgeführt wurde, versucht das Functions SDK, den Hook vor dem Build auszuführen. Da der Post-Restore-Hook jedoch selbst eine weitere Nuget-Wiederherstellung durchführt, kann das Ausführen als Teil des Builds (und nicht die Wiederherstellung) je nach Build-Umgebung Probleme verursachen. Es wird dringend empfohlen, die hier genannten Schritte zu befolgen, um sicherzustellen, dass der Nach-Wiederherstellungshaken als Teil von dotnet restoreläuft.
Regelbeschreibung
Das Erweiterungsbundle ist eine Nutzlast, die zusammen mit einer Funktionsanwendung bereitgestellt wird und die Erweiterungen enthält, die von der Funktionslaufzeit benötigt werden, um die Trigger und Bindungen der Funktionsanwendung zu aktivieren.
So beheben Sie das Problem
Option 1: Funktion csproj direkt wiederherstellen
Der Post-Restore-Hook wird ausgeführt, wenn das Funktionsprojekt direkt wiederhergestellt wird.
dotnet restore MyFunctionApp.csproj
Option 2: Nach-Wiederherstellungs-Hook für das Wiederherstellungsziel hinzufügen.
Das Restore-Ziel wird nur für genau das Projekt ausgeführt, auf das dotnet restore abzielt — es wird nicht an referenzierte Projekte weitergegeben. Das bedeutet, dass der Post-Restore-Hook der Funktions-App (der das Erweiterungsprojekt generiert) beim Wiederherstellen einer Lösung oder eines Durchlaufprojekts niemals aufgerufen wird.
Um dies zu beheben, fügen Sie das folgende Ziel hinzu, damit es in das zu restaurierende Projekt aufgenommen wird. Dieses Ziel durchläuft rekursiv ProjectReference-Elemente und gelangt schließlich zur Function App, in der GenerateFunctionsExtensionProject definiert ist.
<Target Name="_RecursiveGenerateFunctionsExtensionProject" AfterTargets="Restore">
<MSBuild Projects="@(ProjectReference)" Targets="_RecursiveGenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
<MSBuild Projects="@(ProjectReference)" Targets="GenerateFunctionsExtensionProject"
SkipNonexistentProjects="true" SkipNonexistentTargets="true" />
</Target>
Wo dieses Ziel platziert werden soll, hängt davon ab, wie Sie restaurieren:
-
Lösungsdateien (
dotnet restore MySolution.sln): Fügen Sie das Ziel zu einerDirectory.Solution.targets-Datei neben Ihrer Lösungsdatei hinzu. -
Projekt mit einem einzelnen Durchlauf (
dotnet restore dirs.proj): Fügen Sie das Ziel inDirectory.Build.targetsein, unter der Annahme, dassdirs.projes importiert (die Standardeinstellung). Wenn Sie eine Kette von Traversal-Projekten haben (z. B.dirs.proj→Directory.Build.targets→MyFunctionApp.csproj), muss jedessrc/dirs.projin der Kette dieses Ziel haben – entweder direkt oder über sein eigenesdirs.proj.
Wann Warnungen unterdrückt werden sollten
Unterdrückung wird nicht empfohlen. Folgen Sie den Schritten hier, um die Warnung zu beheben.