Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| Elemento | Value |
|---|---|
| Identificador de la regla | AZFW0108 |
| Categoría | Sdk |
| Severity | Warning |
Causa
Esta advertencia del SDK aparece cuando se compila un proyecto que usa Azure.Functions.Sdk sin que se invoque el gancho posterior a la restauración del paquete de extensiones. El hook posterior a la restauración se ejecuta cuando el proyecto de funciones se restaura directamente. Al restaurar un archivo de solución o un proyecto transversal, no se invocará el hook posterior a la restauración.
Cuando el gancho posterior a la restauración no se ejecuta correctamente, el SDK de funciones intentará ejecutar el gancho antes de la compilación. Sin embargo, dado que el gancho posterior a la restauración realiza por sí mismo otra restauración de NuGet, ejecutarlo como parte de la compilación (y no de la restauración) puede causar problemas según el entorno de compilación. Se recomienda encarecidamente seguir los pasos aquí para asegurar que el gancho posterior a la restauración funcione como parte de dotnet restore.
Descripción de la regla
El paquete de extensiones es una carga útil que se implementa junto con una aplicación de funciones y contiene las extensiones necesarias para que el entorno de ejecución de las funciones habilite los desencadenadores y enlaces de la aplicación de funciones.
Solución
Opción 1: Restaurar la función csproj directamente
El enlace posterior a la restauración se ejecutará cuando el proyecto de Functions se restaure directamente.
dotnet restore MyFunctionApp.csproj
Opción 2: Añadir un enlace posterior a la restauración para el destino de restauración.
El Restore destino solo se ejecuta sobre el proyecto exacto al que dotnet restore se dirige, no se propaga a proyectos referenciados. Esto significa que el enlace posterior a la restauración de la aplicación de Function (que genera el proyecto de extensiones) nunca se invoca al restaurar una solución o un proyecto transversal.
Para solucionar esto, añade el siguiente objetivo para que se incluya en el proyecto que se va a restaurar. Este objetivo recorre recursivamente los elementos ProjectReference, hasta llegar a la aplicación de funciones donde se define 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>
Dónde colocar este destino depende de cómo se restaure:
-
Archivos de solución (
dotnet restore MySolution.sln): Añade el destino a unDirectory.Solution.targetsarchivo junto a tu archivo de solución. -
Proyecto de recorrido único (
dotnet restore dirs.proj): Añadir el destino aDirectory.Build.targets, asumiendodirs.projque lo importa (por defecto). Si tienes una cadena de proyectos de recorrido (p. ej.,dirs.proj→Directory.Build.targets→MyFunctionApp.csproj), cadasrc/dirs.projde la cadena debe tener este objetivo, ya sea directamente o a través de su propiodirs.proj.
Cuándo suprimir las advertencias
No se recomienda la supresión. Sigue los pasos aquí para corregir la advertencia.