Con Azure Functions , ¿puedo hacer referencia y usar paquetes NuGet en mi función C #?
Con Azure Functions , ¿puedo hacer referencia y usar paquetes NuGet en mi función C #?
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 la Microsoft.ProjectOxford.Face
versión 1.1.0:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "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:
2016-04-04T19:02:48.745 Restoring packages.
2016-04-04T19:02:48.745 Starting NuGet restore
2016-04-04T19:02:50.183 MSBuild auto-detection: using msbuild version '14.0' from 'D:\Program Files (x86)\MSBuild\14.0\bin'.
2016-04-04T19:02:50.261 Feeds used:
2016-04-04T19:02:50.261 C:\DWASFiles\Sites\facavalfunctest\LocalAppData\NuGet\Cache
2016-04-04T19:02:50.261 https://api.nuget.org/v3/index.json
2016-04-04T19:02:50.261
2016-04-04T19:02:50.511 Restoring packages for D:\home\site\wwwroot\HttpTriggerCSharp1\Project.json...
2016-04-04T19:02:52.800 Installing Newtonsoft.Json 6.0.8.
2016-04-04T19:02:52.800 Installing Microsoft.ProjectOxford.Face 1.1.0.
2016-04-04T19:02:57.095 All packages are compatible with .NETFramework,Version=v4.6.
2016-04-04T19:02:57.189
2016-04-04T19:02:57.189
2016-04-04T19:02:57.455 Packages restored.
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 las using
declaraciones requeridas a su función y usar los tipos definidos en el paquete NuGet que ' he referenciado.
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:
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.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)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/
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 su project.lock.json
archivo al control de código fuente.
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 .
function script root
en tu último párrafo? Entiendo que es donde project.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 su wwwroot
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;
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AWSSDK.S3" Version="3.3.26.3"/>
<PackageReference Include="AWSSDK.Core" Version="3.3.29.1"/>
</ItemGroup>
</Project>
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.
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.
Supongamos que queremos usar el SFTP
cliente, que es una biblioteca externa, almacenada en algún lugar de NuGet
.
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 la Nuget
referencia del paquete usando la XML
estructura (el mismo tipo de estructura que puede encontrar dentro del *.csproj
archivo si crea un proyecto local con Visual Studio e instala algún NuGet
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 .
function.proj
, la ubicación del mismo dll
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.