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 experience is your first 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 sovrascrive le funzioni sviluppate nel portale.When you publish from a local project to a function app, the deployment process overwrites 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.5 o versione successiva.Azure Functions Tools is included in the Azure development workload of Visual Studio 2017 version 15.5, 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

Assicurarsi che Visual Studio sia aggiornato e di usare la versione più recente degli strumenti di Funzioni di Azure.Make sure that your Visual Studio is up-to-date and that you are using the most recent version of the Azure Functions tools.

Altri requisitiOther requirements

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

Controllare la versione degli strumentiCheck your tools version

  1. Scegliere Estensioni e aggiornamenti dal menu Strumenti.From the Tools menu, choose Extensions and Updates. Espandere Installati > Strumenti e scegliere Funzioni di Azure e strumenti per processi Web.Expand Installed > Tools and choose Azure Functions and Web Jobs Tools.

    Verificare la versione degli strumenti di Funzioni

  2. Prendere nota della versione installata.Note the installed Version. È possibile confrontare questa versione con la versione più recente elencata nelle note sulla versione.You can compare this version with the latest version listed in the release notes.

  3. Se la versione è precedente, aggiornare gli strumenti in Visual Studio come illustrato nella sezione seguente.If your version is older, update your tools in Visual Studio as shown in the following section.

Aggiornare gli strumentiUpdate your tools

  1. Nella finestra di dialogo Estensioni e aggiornamenti espandere Aggiornamenti > Visual Studio Marketplace, scegliere Funzioni di Azure e strumenti per processi Web e selezionare Aggiorna.In the Extensions and Updates dialog, expand Updates > Visual Studio Marketplace, choose Azure Functions and Web Jobs Tools and select Update.

    Aggiornare la versione degli strumenti di Funzioni

  2. Dopo aver scaricato l'aggiornamento degli strumenti, chiudere Visual Studio per attivare l'aggiornamento degli strumenti con il programma di installazione di VSIX.After the tools update is downloaded, close Visual Studio to trigger the tools update using the VSIX installer.

  3. Nel programma di installazione scegliere OK per avviare il processo e quindi Modifica per aggiornare gli strumenti.In the installer, choose OK to start and then Modify to update the tools.

  4. Al termine dell'aggiornamento, scegliere Chiudi e riavviare Visual Studio.After the update is complete, choose Close and restart Visual Studio.

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 la gestione, la distribuzione e la condivisione delle risorse.A function app lets you group functions as a logical unit for management, deployment, and sharing of resources.

  1. In Visual Studio selezionare Nuovo > Progetto dal menu File.In Visual Studio, select New > Project from the File menu.

  2. Nella finestra di dialogo Nuovo progetto selezionare Installato, espandere Visual C# > Cloud, selezionare Funzioni di Azure, digitare un nome per il progetto e fare clic su OK.In the New Project dialog, select Installed, expand Visual C# > Cloud, 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

  3. Usare le impostazioni specificate nella tabella disponibile sotto l'immagine.Use the settings specified in the table that follows the image.

    Finestra di dialogo Nuova funzione in Visual Studio

    ImpostazioneSetting Valore consigliatoSuggested value DESCRIZIONEDescription
    VersioneVersion Funzioni di Azure v1Azure Functions v1
    (.NET Framework)(.NET Framework)
    Viene creato un progetto per le funzioni che usa la versione 1 del runtime di Funzioni di Azure.This creates a function project that uses the version 1 runtime of Azure Functions. La versione 2 del runtime, che supporta .NET Core, è attualmente in fase di anteprima.The version 2 runtime, which supports .NET Core, is currently in preview. Per altre informazioni, vedere Come specificare le versioni del runtime per Funzioni di Azure.For more information, see How to target Azure Functions runtime version.
    ModelloTemplate Trigger HTTPHTTP trigger Viene creata una funzione attivata da una richiesta HTTP.This creates a function triggered by an HTTP request.
    Account di archiviazioneStorage account Emulatore di archiviazioneStorage Emulator Un trigger HTTP non usa la connessione dell'account di archiviazione.An HTTP trigger doesn't use the Storage account connection. Tutti gli altri tipi di trigger richiedono una stringa di connessione dell'account di archiviazione valida.All other trigger types require a valid Storage account connection string.
    Diritti di accessoAccess rights AnonimaAnonymous Viene creata una funzione che può essere attivata da qualsiasi client senza dover fornire una chiave.The created function can be triggered by any client without providing a key. Questa impostazione di autorizzazione consente di testare più facilmente la nuova funzione.This authorization setting makes it easy to test your new function. Per altre informazioni sulle chiavi e l'autorizzazione, vedere Chiavi autorizzazione in Associazioni HTTP e webhook.For more information about keys and authorization, see Authorization keys in the HTTP and webhook bindings.
  4. Fare clic su OK per creare il progetto per le funzioni e la funzione attivata da HTTP.Click OK to create the function project and HTTP triggered function.

Il modello di progetto crea un progetto C#, installa il pacchetto NuGet Microsoft.NET.Sdk.Functions e imposta il framework di destinazione.The project template creates a C# project, installs the Microsoft.NET.Sdk.Functions NuGet package, and sets the target framework. Funzioni 1.x usa .NET Framework e Funzioni 2.x usa .NET Standard.Functions 1.x targets the .NET Framework, and Functions 2.x targets .NET Standard. Il nuovo progetto contiene i file seguenti:The new project has 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.

Per altre informazioni, vedere Progetto di libreria di classi per Funzioni.For more information, see Functions class library project.

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

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'app per le funzioni può usare l'Emulatore di archiviazione di Azure per le impostazioni di connessione AzureWebJobsStorage e AzureWebJobsDashboard necessarie per il progetto.Your function app can use the Azure Storage Emulator for the AzureWebJobsStorage and AzureWebJobsDashboard connection settings that are required by the project. Per usare l'emulatore, impostare i valori di queste chiavi su UseDevelopmentStorage=true.To use the emulator, set the values of these keys to UseDevelopmentStorage=true.

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 chiave AzureWebJobsStorage sulla stringa di connessione 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.

    Questo esempio di trigger usa una stringa di connessione con una chiave denominata QueueStorage.This trigger example uses a connection string with a key named QueueStorage. Questa impostazione della stringa di connessione deve essere definita nel file local.settings.json.This connection string setting must be 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 della stringa di connessione vengono passati come parametri all'attributo QueueTrigger.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 Pubblica.Choose Create New and then Publish.

    Pubblicare creando una nuova app per le funzioni

  2. Se non si è ancora connesso Visual Studio al proprio account di Azure, selezionare Aggiungi un account....If you haven't already connected Visual Studio to your Azure account, select 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. Per creare un nuovo gruppo di risorse scegliere Nuovo.Choose New to create a new resource group.
    Piano di servizio appApp Service Plan Piano a consumoConsumption plan Dopo aver fatto clic su Nuovo per creare un nuovo piano, assicurarsi di scegliere Consumo in Dimensioni.Make sure to choose the Consumption under Size after you click New to create a new plan. Scegliere anche una Località nelle vicinanze o vicino ad altri servizi a cui accedono le funzioni.Also, choose a Location in a region near you or near other services your functions access.

    Nota

    L'account di archiviazione di Azure è necessario per il runtime di Funzioni.An Azure storage account is required by the Functions runtime. Per questo motivo, viene creato automaticamente un nuovo account di Archiviazione di Azure quando si crea un'app per le funzioni.Because of this, a new Azure Storage account is created for you when you create a function app.

  4. Fare clic su Crea per creare un'app per le funzioni e le relative risorse in Azure con queste impostazioni e distribuire il codice di progetto della funzione.Click Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  5. Al termine della distribuzione prendere nota del valore di URL sito, ovvero l'indirizzo dell'app per le funzioni in Azure.After the deployment is complete, make a note of the Site URL value, which is the address of your function app in Azure.

    Runtime locale di Azure

Impostazioni dell'app per le funzioniFunction app settings

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 caricate automaticamente quando si pubblica il progetto.These settings are not uploaded automatically when you publish the project.

Il modo più semplice per caricare le impostazioni necessarie per l'app per le funzioni in Azure consiste nell'usare il collegamento Gestisci impostazioni applicazione visualizzato dopo la pubblicazione del progetto.The easiest way to upload the required settings to your function app in Azure is to use the Manage Application Settings... link that is displayed after you successfully publish your project.

Questa operazione visualizza la finestra di dialogo Impostazioni applicazione dell'app per le funzioni. Qui è possibile aggiungere nuove impostazioni dell'applicazione o modificare quelle esistenti.This displays the Application Settings dialog for the function app, where you can add new application settings or modify existing ones.

È anche possibile gestire le impostazioni dell'applicazione in questi altri modi:You can also manage application settings in one of these other 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 altre informazioni sullo sviluppo di funzioni come librerie di classi .NET, vedere Guida di riferimento per gli sviluppatori C# di Funzioni di Azure.To learn more about developing functions as .NET class libraries, see Azure Functions C# developer reference. Questo argomento è collegato anche a esempi d'uso degli attributi per dichiarare i vari tipi di associazioni supportate da 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.