Azure Functions Tools for Visual StudioAzure Functions Tools for Visual Studio

Azure Functions Tools for Visual Studio 2017 è un'estensione di Visual Studio che consente di sviluppare, testare e distribuire funzioni C# in Azure.Azure Functions Tools for Visual Studio 2017 is an extension for Visual Studio that lets you develop, test, and deploy C# functions to Azure. Se questa è la prima esperienza con Funzioni di Azure, è consigliabile leggere altre informazioni in Introduzione a Funzioni di Azure.If this is your first experience with Azure Functions, you can learn more at An introduction to Azure Functions.

Azure Functions Tools offre i vantaggi seguenti:The Azure Functions Tools provides the following benefits:

  • Modifica, compilazione ed esecuzione di funzioni nel computer di sviluppo locale.Edit, build, and run functions on your local development computer.
  • Pubblicazione del proprio progetto di Funzioni di Azure direttamente in Azure.Publish your Azure Functions project directly to Azure.
  • Utilizzo di attributi di processi Web per dichiarare associazioni di funzione direttamente nel codice C# anziché mantenere un file function.json separato per le definizioni di associazione.Use WebJobs attributes to declare function bindings directly in the C# code instead of maintaining a separate function.json for binding definitions.
  • Sviluppo e distribuzione di funzioni C# precompilate.Develop and deploy pre-compiled C# functions. Le funzioni precompilate offrono migliori prestazioni nell'avvio a freddo rispetto alle funzioni basate su script C#.Pre-complied functions provide a better cold-start performance than C# script-based functions.
  • Possibilità di scrivere il codice delle funzioni in C# sfruttando al contempo tutti i vantaggi dello sviluppo in Visual Studio.Code your functions in C# while having all of the benefits of Visual Studio development.

Questo argomento illustra come usare Azure Functions Tools for Visual Studio 2017 per sviluppare le funzioni in C#.This topic shows you how to use the Azure Functions Tools for Visual Studio 2017 to develop your functions in C#. Spiega anche come pubblicare il progetto in Azure come assembly .NET.You also learn how to publish your project to Azure as a .NET assembly.

Importante

Non combinare lo sviluppo locale con lo sviluppo del portale nella stessa app per le funzioni.Don't mix local development with portal development in the same function app. Quando si pubblica da un progetto locale a un'app per le funzioni, il processo di distribuzione sovrascriverà le funzioni sviluppate nel portale.When you publish from a local project to a function app, the deployment process will overwrite any functions that you developed in the portal.

PrerequisitiPrerequisites

Gli strumenti di Funzioni di Azure sono inclusi nel carico di lavoro di sviluppo di Azure in Visual Studio 2017 15.4 o versione successiva.Azure Functions Tools is included in the Azure development workload of Visual Studio 2017 version 15.4, or a later version. Assicurarsi di includere il carico di lavoro di sviluppo di Azure nell'installazione di Visual Studio 2017:Make sure you include the Azure development workload in your Visual Studio 2017 installation:

Installare Visual Studio 2017 con il carico di lavoro Sviluppo di Azure

Per creare e distribuire funzioni, è necessario disporre anche di quanto segue:To create and deploy functions, you also need:

Creare un progetto di Funzioni di AzureCreate an Azure Functions project

Il modello di progetto Funzioni di Azure in Visual Studio crea un progetto che può essere pubblicato in un'app per le funzioni in Azure.The Azure Functions project template in Visual Studio creates a project that can be published to a function app in Azure. Un'app per le funzioni consente di raggruppare le funzioni come un'unità logica per semplificare la gestione, la distribuzione e la condivisione delle risorse.A function app lets you group functions as a logic unit for easier management, deployment, and sharing of resources.

  1. Fare clic con il pulsante destro del mouse sul nodo del progetto in Esplora soluzioni e quindi scegliere Aggiungi > Nuovo elemento.Right mouse click on the project node in Solution Explorer, then choose Add > New Item. Selezionare Funzione di Azure nella finestra di dialogo.Choose Azure Function from the dialog box.

  2. Nella finestra di dialogo Nuovo progetto espandere il nodo Visual C# > Cloud, selezionare Funzioni di Azure, digitare un nome per il progetto e fare clic su OK.In the New Project dialog, expand Visual C# > Cloud node, select Azure Functions, type a Name for your project, and click OK. Il nome dell'app per le funzioni deve essere valido come spazio dei nomi C#, quindi non usare caratteri di sottolineatura, trattini o altri caratteri non alfanumerici.The function app name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

    Finestra di dialogo Nuovo progetto per creare una funzione in Visual Studio

Configurare il progetto per lo sviluppo localeConfigure the project for local development

Quando si crea un nuovo progetto usando il modello di Funzioni di Azure, si ottiene un progetto C# vuoto che contiene i file seguenti:When you create a new project using the Azure Functions template, you get an empty C# project that contains the following files:

  • host.json: consente di configurare l'host di Funzioni.host.json: Lets you configure the Functions host. Queste impostazioni si applicano sia durante l'esecuzione in locale che nell'esecuzione in Azure.These settings apply both when running locally and in Azure. Per altre informazioni, vedere il riferimento su host.json.For more information, see host.json reference.

  • local.settings.json: mantiene le impostazioni usate quando si esegue Funzioni localmente.local.settings.json: Maintains settings used when running functions locally. Queste impostazioni non vengono usate da Azure, bensì dagli strumenti di base di Funzioni di Azure.These settings are not used by Azure, they are used by the Azure Functions Core Tools. Usare questo file per specificare le impostazioni, ad esempio le stringhe di connessione ad altri servizi di Azure.Use this file to specify settings, such as connection strings to other Azure services. Aggiungere una nuova chiave alla matrice di Valori per ogni connessione richiesta dalle funzioni nel progetto.Add a new key to the Values array for each connection required by functions in your project. Per altre informazioni, vedere Local settings file (File delle impostazioni locali) nell'argomento sugli strumenti di base di Funzioni di Azure.For more information, see Local settings file in the Azure Functions Core Tools topic.

Il runtime di Funzioni usa un account di archiviazione di Azure internamente.The Functions runtime uses an Azure Storage account internally. Per tutti i tipi di trigger diversi da HTTP e dai webhook, è necessario impostare la chiave Values.AzureWebJobsStorage su una stringa di connessione di account di archiviazione di Azure valida.For all trigger types other than HTTP and webhooks, you must set the Values.AzureWebJobsStorage key to a valid Azure Storage account connection string.

Nota

L'uso di Emulatore di archiviazione di Azure non è supportato dagli strumenti di Funzioni di Azure quando si eseguono attività di sviluppo in locale.Use of the Azure Storage Emulator is not supported by Azure Functions tools when developing locally.

Per impostare la stringa di connessione dell'account di archiviazione:To set the storage account connection string:

  1. In Visual Studio aprire Cloud Explorer, espandere Account di archiviazione > Your Storage Account (Account di archiviazione personale), quindi selezionare Proprietà e copiare il valore Stringa di connessione primaria.In Visual Studio, open Cloud Explorer, expand Storage Account > Your Storage Account, then select Properties and copy the Primary Connection String value.

  2. Nel progetto, aprire il file local.settings.json e impostare il valore della AzureWebJobsStorage chiave alla stringa di connessione è stata copiata.In your project, open the local.settings.json file and set the value of the AzureWebJobsStorage key to the connection string you copied.

  3. Ripetere il passaggio precedente per aggiungere chiavi univoche alla matrice di Valori per tutte le altre connessioni richieste dalle funzioni.Repeat the previous step to add unique keys to the Values array for any other connections required by your functions.

Creare una funzioneCreate a function

Nelle funzioni precompilate le associazioni usate dalla funzione sono definite tramite l'applicazione di attributi nel codice.In pre-compiled functions, the bindings used by the function are defined by applying attributes in the code. Quando si usa Azure Functions Tools per creare le funzioni dai modelli forniti, questi attributi vengono applicati automaticamente.When you use the Azure Functions Tools to create your functions from the provided templates, these attributes are applied for you.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Aggiungi > Nuovo elemento.In Solution Explorer, right-click on your project node and select Add > New Item. Selezionare Funzione di Azure, digitare un Nome per la classe e fare clic su Aggiungi.Select Azure Function, type a Name for the class, and click Add.

  2. Scegliere il trigger, impostare le proprietà di associazione e fare clic su Crea.Choose your trigger, set the binding properties, and click Create. L'esempio seguente mostra le impostazioni quando si crea una funzione attivata da un'archiviazione code.The following example shows the settings when creating a Queue storage triggered function.

    Viene specificata una chiave di stringa di connessione denominata QueueStorage, che è definita nel file local.settings.json.A connection string key named QueueStorage is supplied, which is defined in the local.settings.json file.

  3. Si esamini la classe appena aggiunta.Examine the newly added class. Si vede un metodo Run statico a cui è associato l'attributo FunctionName.You see a static Run method, that is attributed with the FunctionName attribute. Questo attributo indica che il metodo è il punto di ingresso per la funzione.This attribute indicates that the method is the entry point for the function.

    La classe C# seguente rappresenta ad esempio una funzione di base attivata dall'archiviazione code:For example, the following C# class represents a basic Queue storage triggered function:

    using System;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Host;
    
    namespace FunctionApp1
    {
        public static class Function1
        {
            [FunctionName("QueueTriggerCSharp")]        
            public static void Run([QueueTrigger("myqueue-items", Connection = "QueueStorage")]string myQueueItem, TraceWriter log)
            {
                log.Info($"C# Queue trigger function processed: {myQueueItem}");
            }
        }
    } 
    

    Un attributo specifico dell'associazione viene applicato a ogni parametro di associazione fornito al metodo del punto di ingresso.A binding-specific attribute is applied to each binding parameter supplied to the entry point method. L'attributo accetta le informazioni di associazione come parametri.The attribute takes the binding information as parameters. Nell'esempio precedente il primo parametro dispone di un attributo QueueTrigger, che indica la funzione attivata dalla coda.In the previous example, the first parameter has a QueueTrigger attribute applied, indicating queue triggered function. Il nome della coda e il nome di impostazione di stringa di connessione vengono passati come parametri per il QueueTrigger attributo.The queue name and connection string setting name are passed as parameters to the QueueTrigger attribute.

Test delle funzioniTesting functions

Azure Functions Core Tools consente di eseguire il progetto Funzioni di Azure nel computer di sviluppo locale.Azure Functions Core Tools lets you run Azure Functions project on your local development computer. Verrà richiesto di installare questi strumenti al primo avvio di una funzione da Visual Studio.You are prompted to install these tools the first time you start a function from Visual Studio.

Per testare la funzione premere F5.To test your function, press F5. Se viene visualizzata, accettare la richiesta di Visual Studio di scaricare e installare gli strumenti dell'interfaccia della riga di comando Azure Functions Core Tools.If prompted, accept the request from Visual Studio to download and install Azure Functions Core (CLI) tools. Potrebbe essere necessario anche abilitare un'eccezione del firewall per consentire agli strumenti di gestire le richieste HTTP.You may also need to enable a firewall exception so that the tools can handle HTTP requests.

Con il progetto in esecuzione, è possibile testare il codice come si fa con una funzione distribuita.With the project running, you can test your code as you would test deployed function. Per altre informazioni, vedere Strategie per il test del codice in Funzioni di Azure.For more information, see Strategies for testing your code in Azure Functions. Durante l'esecuzione in modalità di debug, i punti di interruzione vengono raggiunti in Visual Studio come previsto.When running in debug mode, breakpoints are hit in Visual Studio as expected.

Per un esempio di come testare una funzione attivata da una coda, vedere l'esercitazione di avvio rapido alle funzioni attivate da code.For an example of how to test a queue triggered function, see the queue triggered function quickstart tutorial.

Per altre informazioni sull'utilizzo degli strumenti di base di Funzioni di Azure, vedere Come scrivere codice per le funzioni di Azure e testarle in locale.To learn more about using the Azure Functions Core Tools, see Code and test Azure functions locally.

Pubblicazione in AzurePublish to Azure

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Pubblica.In Solution Explorer, right-click the project and select Publish. Selezionare Crea nuovo e quindi fare clic su Pubblica.Choose Create New and then click Publish.

    Pubblicare creando una nuova app per le funzioni

  2. Se non si è ancora connesso Visual Studio al proprio account Azure, fare clic su Aggiungi un account.If you haven't already connected Visual Studio to your Azure account, click Add an account....

  3. Nella finestra Crea servizio app usare le impostazioni di hosting specificate nella tabella seguente:In the Create App Service dialog, use the Hosting settings as specified in the following table:

    Runtime locale di Azure

    ImpostazioneSetting Valore consigliatoSuggested value DescrizioneDescription
    Nome appApp Name Nome globalmente univocoGlobally unique name Nome che identifica in modo univoco la nuova app per le funzioni.Name that uniquely identifies your new function app.
    SottoscrizioneSubscription Scegliere la sottoscrizioneChoose your subscription Sottoscrizione di Azure da usare.The Azure subscription to use.
    Gruppo di risorseResource Group myResourceGroupmyResourceGroup Nome del gruppo di risorse in cui creare l'app per le funzioni.Name of the resource group in which to create your function app.
    Piano di servizio appApp Service Plan Piano a consumoConsumption plan Quando si crea un nuovo piano, assicurarsi di scegliere A consumo in Dimensioni.Make sure to choose the Consumption under Size when you create a new plan.
    Account di archiviazioneStorage account Nome globalmente univocoGlobally unique name Usare un account di archiviazione esistente o crearne uno nuovo.Use an existing storage account or create a new one.
  4. Fare clic su Crea per creare un'app per le funzioni con queste impostazioni in Azure.Click Create to create a function app in Azure with these settings. Al termine del provisioning prendere nota del valore di URL sito, che è l'indirizzo dell'app per le funzioni in Azure.After the provisioning is complete, make a note of the Site URL value, which is the address of your function app in Azure.

    Runtime locale di Azure

Nota

Le impostazioni aggiunte nel file local.settings.json devono essere aggiunte anche all'app per le funzioni in Azure.Any settings you added in the local.settings.json must be also added to the function app in Azure. Queste impostazioni non vengono aggiunte automaticamente.These settings are not added automatically. È possibile aggiungere le impostazioni necessarie per l'app per le funzioni in uno dei modi seguenti:You can add required settings to your function app in one of these ways:

Passaggi successiviNext steps

Per altre informazioni su Azure Functions Tools, vedere la sezione Common Questions (Domande comuni) del post di blog Visual Studio 2017 Tools for Azure Functions.For more information about Azure Functions Tools, see the Common Questions section of the Visual Studio 2017 Tools for Azure Functions blog post.

Per altre informazioni sull'utilizzo degli strumenti di base di Funzioni di Azure, vedere Come scrivere codice per le funzioni di Azure e testarle in locale.To learn more about the Azure Functions Core Tools, see Code and test Azure functions locally.
Per ulteriori informazioni sullo sviluppo di funzioni come librerie di classi .NET, vedere di riferimento per sviluppatori c# Azure funzioni.To learn more about developing functions as .NET class libraries, see Azure Functions C# developer reference. In questo argomento è anche collegamenti a esempi di utilizzo degli attributi per dichiarare i vari tipi di associazioni supportate dalle funzioni di Azure.This topic also links to examples of how to use attributes to declare the various types of bindings supported by Azure Functions.