Con Azure Functions , ¿puedo hacer referencia y usar paquetes NuGet en mi función C #?
                    
                        c#
                                azure
                                azure-functions
                                nuget-package
                                azure-web-app-service
                                
                    
                    
                        Fabio Cavalcante
fuente
                
                fuente

Respuestas:
¡Si! Aunque el portal de Azure Functions no proporciona actualmente un mecanismo para agregar y administrar paquetes NuGet, el tiempo de ejecución admite referencias NuGet y se asegurará de que se usen correctamente al compilar y ejecutar sus funciones.
Para definir sus dependencias, debe crear un
Project.jsonarchivo con las referencias del paquete NuGet necesarias. Aquí hay un ejemplo que agrega una referencia a laMicrosoft.ProjectOxford.Faceversión 1.1.0:El portal de Azure Functions proporciona una forma conveniente de administrar sus archivos de funciones, que podemos usar para crear (o cargar) nuestros
project.json:project.jsonarchivo creado previamente en su máquinaproject.jsony defina las referencias de su paquete (puede usar el ejemplo anterior como plantilla).El proceso de restauración del paquete comenzará y debería ver un resultado similar al siguiente en la ventana de registro:
Como se esperaba, el tiempo de ejecución de Azure Functions agregará automáticamente las referencias a los ensamblados del paquete, por lo que NO es necesario que agregue explícitamente referencias de ensamblado usando
#r "AssemblyName", simplemente puede agregar lasusingdeclaraciones requeridas a su función y usar los tipos definidos en el paquete NuGet que ' he referenciado.Opciones de implementación adicionales
Dado que Azure Functions se basa en App Services, como alternativa a los pasos anteriores, también tiene acceso a todas las excelentes opciones de implementación disponibles para las aplicaciones web de Azure estándar (sitios web de Azure).
Aquí hay unos ejemplos:
Uso de App Service Editor (Mónaco)
Para administrar sus archivos directamente desde su navegador utilizando App Service Editor (Mónaco):
Function app settingsGo to App Service SettingsToolsbotónOnsi aún no está habilitado y haga clic enGoproject.jsonarchivo en la carpeta de su función (la carpeta que lleva el nombre de su función.Usando el punto final SCM (Kudu)
https://<function_app_name>.scm.azurewebsites.netD:\home\site\wwwroot\<function_name>Project.jsonarchivo en la carpeta (en la cuadrícula de archivos)FTP
Una vez conectado (siguiendo las instrucciones anteriores) copie su
Project.jsonarchivo a/site/wwwroot/<function_name>Para obtener opciones de implementación adicionales, consulte: https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
Integración continua
Si habilita la integración continua e implementa su función con un
project.jsonarchivo cuando su aplicación de función no se está ejecutando, la restauración del paquete se realizará automáticamente una vez que se inicialice su aplicación de función. Se recomienda que no agregue suproject.lock.jsonarchivo al control de código fuente.Ensamblados precompilados
Las funciones también se pueden implementar como ensamblados precompilados y, en este caso, toda la administración de dependencias se maneja en Visual Studio. Esta opción se puede usar como bibliotecas de clases estándar en cualquier versión de Visual Studio o mediante Visual Studio 2017 Azure Functions Tools .
fuente
function script rooten tu último párrafo? Entiendo que es dondeproject.jsonse encuentra. ¿Es eso correcto?project.jsonestá en su carpeta de función, que es una carpeta secundaria de la raíz guión. La raíz del script se asigna a suwwwrootcarpeta en Azure.Este hilo me ayudó mucho, pero todavía perdí algunas horas tratando de que Project.json funcionara, sin éxito.
Si crea una función de Azure en la versión 2.x, debe hacerlo de una manera diferente.
Cree un nuevo archivo como se indica, pero asígnele el nombre function.proj . Este archivo tiene una estructura XML para importar bibliotecas a través de Nuget.
Este es mi ejemplo al importar el SDK de Amazon S3 para .Net;
al guardar esto, debería ver la actualización de la consola que indica que los paquetes se están instalando. Esto realmente no está bien documentado y me tomó algunas horas descubrirlo. Así que espero que esto ayude a alguien.
fuente
Puede usar paquetes de Nuget en sus funciones de Azure. La forma más sencilla será usar Visual Studio 2017 15.4 donde hay una plantilla para Azure Functions. Siga los pasos a continuación
1) Agregar proyecto de función de Azure: haga clic con el botón derecho en la solución y seleccione Agregar nuevo proyecto. Vaya a la opción CLOUD, allí encontrará el proyecto "Función Azure".
2) Ahora es bonito agregar cualquier paquete Nuget. Expanda "DEPENDENCIAS" y haga clic derecho sobre él para seleccionar la opción "Administrar paquetes Nuget". Aparecerá el cuadro de diálogo Paquete Nuget, seleccione cualquier paquete Nuget que desee instalar. Ver captura de pantalla a continuación
3) Ahora publique su función de Azure, Visual Studio se encargará de todas las configuraciones, etc.
Este método funcionará solo si usa Visual Studio 2017 15.4 o superior; de lo contrario, tendrá que seguir otras formas como lo explicaron otros.
fuente
Supongamos que queremos usar el
SFTPcliente, que es una biblioteca externa, almacenada en algún lugar deNuGet.Para lograrlo, de acuerdo con la última especificación de Azure Functions , haga lo siguiente:
Abra la sección de archivos dentro de su función de Azure y agregue un nuevo archivo llamado
function.proj.Dentro de eso,
function.projcoloque laNugetreferencia del paquete usando laXMLestructura (el mismo tipo de estructura que puede encontrar dentro del*.csprojarchivo si crea un proyecto local con Visual Studio e instala algúnNuGetpaquete en él).A continuación, incluyamos la referencia de la biblioteca al proyecto:
Lo que es esencial aquí es que debe proporcionar una ruta completa a la biblioteca, como en el ejemplo que puede ver:
"D:\home\site\wwwroot\bin\your_custom_library.dll"Finalmente, abra la sección Registros y guarde el código. Después de un tiempo, debería ver el
NuGetregistro de restauración de paquetes.Nota: estos registros también pueden aparecer al guardar un
function.projarchivo o al ejecutar el proyecto.En caso de que la biblioteca siga apareciendo como desconocida, intente agregarla
Dllmanualmente en la carpeta bin usando el Explorador de Azure Cloud desde Visual Studio .fuente
function.proj, la ubicación del mismodllaparece en la sección Registros después de un período de tiempo. A veces es necesario volver a cargar la página para la función de Azure, a veces presionar el botón "Ejecutar" para ver la instalación de los paquetes NuGet y también la ubicación. Verifique lo que se está imprimiendo en la sección Registro como ubicación e intente poner eso.Tenga en cuenta que también se admite el nuevo formato .csproj en Visual Studio 2017. Si crea su proyecto como un proyecto web ASPNET, el tiempo de ejecución de Azure Functions descarga todos los paquetes nuget necesarios antes de compilar su proyecto.
fuente