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.json
archivo con las referencias del paquete NuGet necesarias. Aquí hay un ejemplo que agrega una referencia a laMicrosoft.ProjectOxford.Face
versió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.json
archivo creado previamente en su máquinaproject.json
y 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 lasusing
declaraciones 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 settings
Go to App Service Settings
Tools
botónOn
si aún no está habilitado y haga clic enGo
project.json
archivo 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.net
D:\home\site\wwwroot\<function_name>
Project.json
archivo en la carpeta (en la cuadrícula de archivos)FTP
Una vez conectado (siguiendo las instrucciones anteriores) copie su
Project.json
archivo 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.json
archivo 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.json
archivo 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 root
en tu último párrafo? Entiendo que es dondeproject.json
se encuentra. ¿Es eso correcto?project.json
está 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 suwwwroot
carpeta 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
SFTP
cliente, 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
.Para obtener más información, consulte la documentación de Microsoft .
Dentro de eso,
function.proj
coloque laNuget
referencia del paquete usando laXML
estructura (el mismo tipo de estructura que puede encontrar dentro del*.csproj
archivo si crea un proyecto local con Visual Studio e instala algúnNuGet
paquete 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
NuGet
registro de restauración de paquetes.Nota: estos registros también pueden aparecer al guardar un
function.proj
archivo o al ejecutar el proyecto.En caso de que la biblioteca siga apareciendo como desconocida, intente agregarla
Dll
manualmente en la carpeta bin usando el Explorador de Azure Cloud desde Visual Studio .fuente
function.proj
, la ubicación del mismodll
aparece 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