Desenvolver o Azure Functions usando o Visual StudioDevelop Azure Functions using Visual Studio

O Visual Studio permite que você desenvolva, teste C# e implante funções de biblioteca de classes no Azure.Visual Studio lets you develop, test, and deploy C# class library functions to Azure. Se esta for sua primeira experiência com o Azure Functions, você pode aprender mais em Uma introdução ao Azure Functions.If this experience is your first with Azure Functions, you can learn more at An introduction to Azure Functions.

O Visual Studio oferece os seguintes benefícios ao desenvolver suas funções:Visual Studio provides the following benefits when develop your functions:

  • Editar, criar e executar funções em seu computador de desenvolvimento local.Edit, build, and run functions on your local development computer.
  • Publique seu projeto de Azure Functions diretamente no Azure e crie recursos do Azure conforme necessário.Publish your Azure Functions project directly to Azure, and create Azure resources as needed.
  • Use C# atributos para declarar associações de função diretamente no C# código.Use C# attributes to declare function bindings directly in the C# code.
  • Desenvolver e implantar funções de pré-compiladas C#.Develop and deploy pre-compiled C# functions. Funções pré-compiladas fornecem um desempenho de inicialização a frio melhor que funções baseadas em script C#.Pre-complied functions provide a better cold-start performance than C# script-based functions.
  • Codificar suas funções em C# tendo todos os benefícios de desenvolvimento do Visual Studio.Code your functions in C# while having all of the benefits of Visual Studio development.

Este artigo fornece detalhes sobre como usar o Visual Studio para desenvolver C# funções de biblioteca de classes e publicá-las no Azure.This article provides details about how to use Visual Studio to develop C# class library functions and publish them to Azure. Antes de ler este artigo, você deve concluir o início rápido das Funções para o Visual Studio.Before you read this article, you should complete the Functions quickstart for Visual Studio.

Salvo indicação em contrário, os procedimentos e exemplos mostrados são para o Visual Studio 2019.Unless otherwise noted, procedures and examples shown are for Visual Studio 2019.

pré-requisitosPrerequisites

Azure Functions ferramentas estão incluídas na carga de trabalho de desenvolvimento do Azure do Visual Studio, começando com o Visual Studio 2017.Azure Functions Tools is included in the Azure development workload of Visual Studio starting with Visual Studio 2017. Certifique-se de incluir a carga de trabalho de desenvolvimento do Azure em sua instalação do Visual Studio.Make sure you include the Azure development workload in your Visual Studio installation.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Outros recursos necessários, como uma conta de armazenamento do Azure, são criados em sua assinatura durante o processo de publicação.Other resources that you need, such as an Azure Storage account, are created in your subscription during the publishing process.

Observação

No Visual Studio 2017, a carga de trabalho de desenvolvimento do Azure instala as ferramentas de Azure Functions como uma extensão separada.In Visual Studio 2017, the Azure development workload installs the Azure Functions Tools as a separate extension. Ao atualizar o Visual Studio 2017, verifique também se você está usando a versão mais recente das ferramentas de Azure functions.When you update your Visual Studio 2017, also make sure that you are using the most recent version of the Azure Functions tools. As seções a seguir mostram como verificar e (se necessário) atualizar sua extensão de ferramentas de Azure Functions no Visual Studio 2017.The following sections show you how to check and (if needed) update your Azure Functions Tools extension in Visual Studio 2017.

Ignore esta seção ao usar o Visual Studio 2019.Please skip these section when using Visual Studio 2019.

Verifique a versão das ferramentas no Visual Studio 2017Check your tools version in Visual Studio 2017

  1. No menu Ferramentas, clique em Extensões e Atualizações.From the Tools menu, choose Extensions and Updates. Expanda as Ferramentas > Instaladas e escolha Azure Functions e Ferramentas de Trabalhos da Web .Expand Installed > Tools and choose Azure Functions and Web Jobs Tools.

    Verifique a versão das ferramentas do Functions

  2. Observe a Versão instalada.Note the installed Version. Você pode comparar esta versão com a versão mais recente listada nas notas de versão.You can compare this version with the latest version listed in the release notes.

  3. Se a sua versão for mais antiga, atualize suas ferramentas no Visual Studio conforme mostrado na seção a seguir.If your version is older, update your tools in Visual Studio as shown in the following section.

Atualize suas ferramentas no Visual Studio 2017Update your tools in Visual Studio 2017

  1. Na caixa de diálogo Extensões e Atualizações, expanda Atualizações > Visual Studio Marketplace, escolha Azure Functions e Ferramentas de Trabalhos da Web e selecione Atualizar.In the Extensions and Updates dialog, expand Updates > Visual Studio Marketplace, choose Azure Functions and Web Jobs Tools and select Update.

    Atualize a versão das ferramentas do Functions

  2. Depois de fazer o download da atualização das ferramentas, feche o Visual Studio para disparar a atualização das ferramentas usando o instalador VSIX.After the tools update is downloaded, close Visual Studio to trigger the tools update using the VSIX installer.

  3. No instalador, escolha OK para iniciar e depois Modificar para atualizar as ferramentas.In the installer, choose OK to start and then Modify to update the tools.

  4. Depois que a atualização for concluída, escolha Fechar e reinicie o Visual Studio.After the update is complete, choose Close and restart Visual Studio.

Observação

No Visual Studio 2019 e posterior, a extensão de ferramentas de Azure Functions é atualizada como parte do Visual Studio.In Visual Studio 2019 and later, the Azure Functions tools extension is updated as part of Visual Studio.

Criar um projeto do Azure FunctionsCreate an Azure Functions project

O modelo de projeto do Azure Functions no Visual Studio cria um projeto que pode ser publicado em um aplicativo de funções no Azure.The Azure Functions project template in Visual Studio creates a project that can be published to a function app in Azure. Você pode usar um aplicativo de funções para as funções do grupo como uma unidade lógica para gerenciamento, implantação e compartilhamento de recursos.You can use a function app to group functions as a logical unit for management, deployment, and sharing of resources.

  1. No Visual Studio, no menu Arquivo, selecione Novo > Projeto.In Visual Studio, on the File menu, select New > Project.

  2. Na caixa de diálogo Criar um projeto, pesquise functions, escolha o modelo do Azure Functions e selecione Avançar.In the Create a new project dialog box, search for functions, choose the Azure Functions template, and select Next.

  3. Insira um nome para seu projeto e selecione Criar.Enter a name for your project, and select Create. O nome do aplicativo de funções deve ser válido como um namespace do C# e, portanto, não use outros caracteres não alfanuméricos, hífens ou sublinhados.The function app name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

  4. Em Criar um aplicativo Azure Functions, use as opções a seguir:In Create a new Azure Functions application, use the following options:

    • Azure Functions v2 (.NET Core) 1Azure Functions v2 (.NET Core) 1
    • Gatilho HTTPHTTP trigger
    • Conta de Armazenamento: Emulador de armazenamentoStorage Account: Storage Emulator
    • Nível de autorização: AnônimoAuthorization level: Anonymous
    OpçãoOption Valor sugeridoSuggested value DESCRIÇÃODescription
    Tempo de execução do FunctionsFunctions runtime Azure Functions 2.x
    (.NET Core)
    Azure Functions 2.x
    (.NET Core)
    Essa configuração cria um projeto de função que usa o tempo de execução versão 2.x do Azure Functions, o qual dá suporte a .NET Core.This setting creates a function project that uses the version 2.x runtime of Azure Functions, which supports .NET Core. O Azure Functions 1.x dá suporte ao .NET Framework.Azure Functions 1.x supports the .NET Framework. Para obter mais informações, consulte Direcionar o tempo de execução do Azure Functions.For more information, see Target Azure Functions runtime version.
    Modelo de funçãoFunction template Gatilho HTTPHTTP trigger Essa configuração cria uma função acionada por uma solicitação HTTP.This setting creates a function triggered by an HTTP request.
    Conta de armazenamentoStorage Account Emulador de armazenamentoStorage Emulator Um gatilho HTTP não usa a conexão da conta de Armazenamento do Microsoft Azure.An HTTP trigger doesn't use the Azure Storage account connection. Todos os outros tipos de gatilho exigem uma cadeia de conexão de conta de armazenamento válida.All other trigger types require a valid Storage account connection string. Como o Functions requer uma conta de armazenamento, uma é atribuída ou criada quando você publica seu projeto no Azure.Because Functions requires a storage account, one is assigned or created when you publish your project to Azure.
    Nível de autorizaçãoAuthorization level AnônimoAnonymous A função criada pode ser acionada por qualquer cliente sem fornecer uma chave.The created function can be triggered by any client without providing a key. Essa configuração de autorização torna fácil testar a nova função.This authorization setting makes it easy to test your new function. Para obter mais informações sobre chaves e autorização, consulte Chaves de autorização no associações HTTP e webhook.For more information about keys and authorization, see Authorization keys in the HTTP and webhook bindings.

    Observação

    Verifique se você definiu o Nível de autorização como Anonymous.Make sure you set the Authorization level to Anonymous. Se você escolher o nível padrão de Function, é necessário que você apresente a chave da função em solicitações para acessar seu ponto de extremidade da função.If you choose the default level of Function, you're required to present the function key in requests to access your function endpoint.

  5. Selecione Criar para criar o projeto de função e a função disparada por HTTP.Select Create to create the function project and HTTP-triggered function.

O modelo de projeto cria um projeto C#, instala o pacote NuGet Microsoft.NET.Sdk.Functions e define a estrutura de destino.The project template creates a C# project, installs the Microsoft.NET.Sdk.Functions NuGet package, and sets the target framework. O novo projeto contém os seguintes arquivos:The new project has the following files:

  • host.json: Permite que você configure o host do Functions.host.json: Lets you configure the Functions host. Essas configurações se aplicam para execução local e no Azure.These settings apply both when running locally and in Azure. Para obter mais informações, consulte a referência para host.json.For more information, see host.json reference.

  • local.Settings.json: Mantém as configurações usadas ao executar as funções localmente.local.settings.json: Maintains settings used when running functions locally. Essas configurações não são usadas durante a execução no Azure.These settings aren't used when running in Azure. Para obter mais informações, consulte Local Settings File.For more information, see Local settings file.

    Importante

    Como o arquivo Settings pode conter segredos, ele devem ser excluídos do seu controle de origem do projeto.Because the local.settings.json file can contain secrets, you must excluded it from your project source control. A configuração Cópia para o diretório de saída desse arquivo deve ser sempre Copiar se for mais recente.The Copy to Output Directory setting for this file should always be Copy if newer.

Para saber mais, confira Projeto de biblioteca de classe de funções.For more information, see Functions class library project.

Arquivo de configurações localLocal settings file

O arquivo local. Settings. JSON armazena as configurações do aplicativo, cadeias de conexão e configurações usadas pelas ferramentas de desenvolvimento local.The local.settings.json file stores app settings, connection strings, and settings used by local development tools. As configurações no arquivo local. Settings. JSON são usadas somente quando você está executando projetos localmente.Settings in the local.settings.json file are used only when you're running projects locally. O arquivo de configurações local tem esta estrutura:The local settings file has this structure:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Essas configurações têm suporte quando você executa projetos localmente:These settings are supported when you run projects locally:

ConfiguraçãoSetting DescriçãoDescription
IsEncrypted Quando essa configuração é definida como true, todos os valores são criptografados com uma chave do computador local.When this setting is set to true, all values are encrypted with a local machine key. Usado com func settings comandos.Used with func settings commands. O valor padrão é false.Default value is false.
Values Matriz de configurações de aplicativo e cadeias de conexão usadas quando um projeto é executado localmente.Array of application settings and connection strings used when a project is running locally. Esses pares de chave-valor (cadeia de caracteres de cadeia de caracteres) correspondem às configurações do aplicativo em seu aplicativo de funções no Azure, como AzureWebJobsStorage.These key-value (string-string) pairs correspond to application settings in your function app in Azure, like AzureWebJobsStorage. Muitos gatilhos e associações têm uma propriedade que se refere a uma configuração de aplicativo de cadeia de conexão, como Connection para o gatilho do armazenamento de BLOBs.Many triggers and bindings have a property that refers to a connection string app setting, like Connection for the Blob storage trigger. Para essas propriedades, você precisa de uma configuração de aplicativo definida na matriz de Values.For these properties, you need an application setting defined in the Values array.
AzureWebJobsStorage é uma configuração de aplicativo necessária para gatilhos diferentes de http.AzureWebJobsStorage is a required app setting for triggers other than HTTP.
A versão 2. x e superior do tempo de execução do Functions requer a configuração [FUNCTIONS_WORKER_RUNTIME], que é gerada para seu projeto por ferramentas principais.Version 2.x and higher of the Functions runtime requires the [FUNCTIONS_WORKER_RUNTIME] setting, which is generated for your project by Core Tools.
Quando você tiver o emulador de armazenamento do Azure instalado localmente e definir AzureWebJobsStorage como UseDevelopmentStorage=true, as ferramentas principais usarão o emulador.When you have the Azure storage emulator installed locally and you set AzureWebJobsStorage to UseDevelopmentStorage=true, Core Tools uses the emulator. O emulador é útil durante o desenvolvimento, mas você deve testar com uma conexão de armazenamento real antes da implantação.The emulator is useful during development, but you should test with an actual storage connection before deployment.
Os valores devem ser cadeias de caracteres e não objetos JSON ou matrizes.Values must be strings and not JSON objects or arrays. Os nomes de configuração não podem incluir dois-pontos (:) ou um sublinhado duplo (__).Setting names can't include a colon (:) or a double underline (__). Esses caracteres são reservados pelo tempo de execução.These characters are reserved by the runtime.
Host As configurações nesta seção personalizam o processo de host do Functions quando você executa projetos localmente.Settings in this section customize the Functions host process when you run projects locally. Essas configurações são separadas das configurações de host. JSON, que também se aplicam quando você executa projetos no Azure.These settings are separate from the host.json settings, which also apply when you run projects in Azure.
LocalHttpPort Define a porta padrão usada ao executar o host local do Functions (func host start e func run).Sets the default port used when running the local Functions host (func host start and func run). A opção de linha de comando --port tem precedência sobre essa configuração.The --port command-line option takes precedence over this setting.
CORS Define as origens permitidas para CORS (Compartilhamento de recurso entre origens).Defines the origins allowed for cross-origin resource sharing (CORS). As origens são fornecidas como uma lista separada por vírgulas, sem espaços.Origins are supplied as a comma-separated list with no spaces. Há suporte para o valor do caractere curinga (*), que permite solicitações de qualquer origem.The wildcard value (*) is supported, which allows requests from any origin.
CORSCredentials Quando definido como true, permite withCredentials solicitações.When set to true, allows withCredentials requests.
ConnectionStrings Uma coleção.A collection. Não use essa coleção para as cadeias de conexão usadas por suas associações de função.Don't use this collection for the connection strings used by your function bindings. Essa coleção é usada somente por estruturas que normalmente recebem cadeias de conexão da seção ConnectionStrings de um arquivo de configuração, como Entity Framework.This collection is used only by frameworks that typically get connection strings from the ConnectionStrings section of a configuration file, like Entity Framework. As cadeias de caracteres de conexão neste objeto são adicionadas ao ambiente com o tipo de provedor de System.Data.SqlClient.Connection strings in this object are added to the environment with the provider type of System.Data.SqlClient. Os itens nesta coleção não são publicados no Azure com outras configurações de aplicativo.Items in this collection aren't published to Azure with other app settings. Você deve adicionar esses valores explicitamente à coleção de Connection strings de suas configurações do aplicativo de funções.You must explicitly add these values to the Connection strings collection of your function app settings. Se você estiver criando um SqlConnection no seu código de função, deverá armazenar o valor da cadeia de conexão com as outras conexões nas configurações do aplicativo no Portal.If you're creating a SqlConnection in your function code, you should store the connection string value with your other connections in Application Settings in the portal.

As configurações em local. Settings. JSON não são carregadas automaticamente quando você publica o projeto.Settings in local.settings.json aren't uploaded automatically when you publish the project. Para certificar-se de que essas configurações também existam em seu aplicativo de funções no Azure, você deve carregá-las depois de publicar o projeto.To make sure that these settings also exist in your function app in Azure, you must upload them after you publish your project. Para saber mais, confira configurações do aplicativo de funções.To learn more, see Function app settings.

Os valores em ConnectionStrings nunca são publicados.Values in ConnectionStrings are never published.

Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente.The function app settings values can also be read in your code as environment variables. Para obter mais informações, consulte variáveis de ambiente.For more information, see Environment variables.

Configurar seu projeto para desenvolvimento localConfigure the project for local development

O runtime do Functions usa internamente uma conta de Armazenamento do Azure.The Functions runtime uses an Azure Storage account internally. Para todos os tipos de gatilhos diferentes de HTTP e webhooks, você deve definir a chave Values.AzureWebJobsStorage para uma cadeia de conexão de conta de Armazenamento do Azure válida.For all trigger types other than HTTP and webhooks, you must set the Values.AzureWebJobsStorage key to a valid Azure Storage account connection string. O aplicativo de funções também pode usar o Emulador de Armazenamento do Microsoft Azure para a configuração de conexão AzureWebJobsStorage exigida pelo projeto.Your function app can also use the Azure storage emulator for the AzureWebJobsStorage connection setting that is required by the project. Para usar o emulador, defina o valor de AzureWebJobsStorage para UseDevelopmentStorage=true.To use the emulator, set the value of AzureWebJobsStorage to UseDevelopmentStorage=true. Altere essa configuração para uma cadeia de conexão de conta de armazenamento real antes da implantação.Change this setting to an actual storage account connection string before deployment.

Para definir a cadeia de conexão da conta de armazenamento:To set the storage account connection string:

  1. No Visual Studio, abra o Cloud Explorer, expanda conta de armazenamento > sua conta de armazenamentoe, na guia Propriedades , copie o valor da cadeia de conexão primária .In Visual Studio, open Cloud Explorer, expand Storage Account > Your Storage Account, then in the Properties tab copy the Primary Connection String value.

  2. Em seu projeto, abra o arquivo local.settings.json e defina o valor da chave AzureWebJobsStorage na cadeia de conexão que você copiou.In your project, open the local.settings.json file and set the value of the AzureWebJobsStorage key to the connection string you copied.

  3. Repita a etapa anterior para adicionar as chaves exclusivas para a matriz de Valores para todas as outras conexões necessárias para as suas funções.Repeat the previous step to add unique keys to the Values array for any other connections required by your functions.

Adicionar uma função ao projetoAdd a function to your project

Em C# funções de biblioteca de classes, as associações usadas pela função são definidas pela aplicação de atributos no código.In C# class library functions, the bindings used by the function are defined by applying attributes in the code. Quando você cria seus gatilhos de função a partir dos modelos fornecidos, os atributos de gatilho são aplicados para você.When you create your function triggers from the provided templates, the trigger attributes are applied for you.

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto e selecione Adicionar > Novo Item.In Solution Explorer, right-click on your project node and select Add > New Item. Selecione Azure Function, digite um Nome para a classe e clique em Adicionar.Select Azure Function, type a Name for the class, and click Add.

  2. Escolha o gatilho, defina as propriedades de associação e clique em Criar.Choose your trigger, set the binding properties, and click Create. O exemplo a seguir mostra as configurações ao criar uma função disparada por armazenamento de filas.The following example shows the settings when creating a Queue storage triggered function.

    Criar uma função disparada por filas

    Este exemplo de gatilho usa uma cadeia de conexão com uma chave chamada QueueStorage.This trigger example uses a connection string with a key named QueueStorage. Essa configuração de cadeia de conexão deve ser definida no arquivo local.settings.json.This connection string setting must be defined in the local.settings.json file.

  3. Examine a classe recém-adicionada.Examine the newly added class. Você verá um método estático Run, que é atribuído ao atributo FunctionName.You see a static Run method, that is attributed with the FunctionName attribute. Esse atributo indica que o método é o ponto de entrada para a função.This attribute indicates that the method is the entry point for the function.

    Por exemplo, a classe C# a seguir representa uma função básica disparada pelo armazenamento de filas:For example, the following C# class represents a basic Queue storage triggered function:

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

    Um atributo específico de associação é aplicado a cada parâmetro de associação fornecido ao método do ponto de entrada.A binding-specific attribute is applied to each binding parameter supplied to the entry point method. O atributo utiliza as informações de associação como parâmetros.The attribute takes the binding information as parameters. No exemplo anterior, o primeiro parâmetro tem um atributo QueueTrigger aplicado, que indica a função disparada por fila.In the previous example, the first parameter has a QueueTrigger attribute applied, indicating queue triggered function. O nome da fila e o nome de configuração da cadeia de conexão são passadas como parâmetros ao atributo QueueTrigger.The queue name and connection string setting name are passed as parameters to the QueueTrigger attribute. Para obter mais informações, veja Associações do armazenamento de Fila do Azure para o Azure Functions.For more information, see Azure Queue storage bindings for Azure Functions.

Você pode usar o procedimento acima para adicionar mais funções a seu projeto de aplicativo de funções.You can use the above procedure to add more functions to your function app project. Cada função no projeto pode ter um gatilho diferente, mas uma função deve ter apenas um gatilho.Each function in the project can have a different trigger, but a function must have exactly one trigger. Para obter mais informações, consulte Gatilhos e conceitos de associações do Azure Functions.For more information, see Azure Functions triggers and bindings concepts.

Adicionar associaçõesAdd bindings

Assim como acontece com gatilhos, as associações de entrada e saída são adicionadas à sua função como atributos de associação.As with triggers, input and output bindings are added to your function as binding attributes. Adicione associações a uma função da seguinte maneira:Add bindings to a function as follows:

  1. Verifique se você configurou o projeto para o desenvolvimento local.Make sure you've configured the project for local development.

  2. Adicione o pacote de extensão do NuGet pertinente para a associação.Add the appropriate NuGet extension package for the specific binding. Para saber mais, confira Desenvolvimento Local em C# usando o Visual Studio no artigo Gatilhos e associações.For more information, see Local C# development using Visual Studio in the Triggers and Bindings article. Os requisitos de pacote NuGet específicos da associação estão no artigo de referência da associação.The binding-specific NuGet package requirements are found in the reference article for the binding. Por exemplo, encontre os requisitos do pacote para o gatilho dos Hubs de Eventos no artigo de referência da associação dos Hubs de Eventos.For example, find package requirements for the Event Hubs trigger in the Event Hubs binding reference article.

  3. Se houver configurações de aplicativo exigidas pela associação, adicione-as à coleção Valores no arquivo de configuração local.If there are app settings that the binding needs, add them to the Values collection in the local setting file. Esses valores são usados quando a função é executada localmente.These values are used when the function runs locally. Quando a função é executada no aplicativo de funções no Azure, as configurações do aplicativo de funções são usadas.When the function runs in the function app in Azure, the function app settings are used.

  4. Adicione o atributo de associação apropriado para a assinatura do método.Add the appropriate binding attribute to the method signature. No exemplo a seguir, uma mensagem da fila dispara a função e a associação de saída cria uma nova mensagem de fila com o mesmo texto em uma fila diferente.In the following example, a queue message triggers the function, and the output binding creates a new queue message with the same text in a different queue.

    public static class SimpleExampleWithOutput
    {
        [FunctionName("CopyQueueMessage")]
        public static void Run(
            [QueueTrigger("myqueue-items-source", Connection = "AzureWebJobsStorage")] string myQueueItem, 
            [Queue("myqueue-items-destination", Connection = "AzureWebJobsStorage")] out string myQueueItemCopy,
            ILogger log)
        {
            log.LogInformation($"CopyQueueMessage function processed: {myQueueItem}");
            myQueueItemCopy = myQueueItem;
        }
    }
    

    A conexão com o Armazenamento de filas é obtida na configuração AzureWebJobsStorage.The connection to Queue storage is obtained from the AzureWebJobsStorage setting. Para saber mais, confira o artigo de referência da associação específica.For more information, see the reference article for the specific binding.

Esta tabela mostra as associações com suporte nas versões principais do tempo de execução de Azure Functions:This table shows the bindings that are supported in the major versions of the Azure Functions runtime:

TypeType 1.x1.x 2. x e superior12.x and higher1 GatilhoTrigger EntradaInput SaídaOutput
Armazenamento de BlobsBlob storage
Cosmos DBCosmos DB
Grade de EventosEvent Grid
Hubs de EventosEvent Hubs
WebHooks de & de HTTPHTTP & webhooks
Hub IoTIoT Hub
Microsoft Graph
Tabelas do Excel
Microsoft Graph
Excel tables
Microsoft Graph
Arquivos do OneDrive
Microsoft Graph
OneDrive files
Microsoft Graph
Email do Outlook
Microsoft Graph
Outlook email
Microsoft Graph eventos de
Microsoft Graph
events
Microsoft Graph
Tokens de autenticação
Microsoft Graph
Auth tokens
Aplicativos MóveisMobile Apps
Hubs de NotificaçãoNotification Hubs
Armazenamento de filasQueue storage
SendGridSendGrid
Barramento de ServiçoService Bus
SignalRSignalR
Armazenamento de tabelasTable storage
TimerTimer
TwilioTwilio

1 a partir do tempo de execução da versão 2. x, todas as associações, exceto http e Timer, devem ser registradas.1 Starting with the version 2.x runtime, all bindings except HTTP and Timer must be registered. Confira Registrar as extensões de associação.See Register binding extensions.

Funções de testeTesting functions

As Ferramentas Principais do Azure Functions permitem executar o projeto do Azure Functions no seu computador de desenvolvimento local.Azure Functions Core Tools lets you run Azure Functions project on your local development computer. Você precisa instalar essas ferramentas na primeira vez em que inicia uma função no Visual Studio.You are prompted to install these tools the first time you start a function from Visual Studio.

Para testar sua função, pressione F5.To test your function, press F5. Se solicitado, aceite a solicitação do Visual Studio para baixar e instalar as ferramentas principais (CLI) do Azure Functions.If prompted, accept the request from Visual Studio to download and install Azure Functions Core (CLI) tools. Você também precisará habilitar a exceção de firewall de forma que as ferramentas possam lidar com solicitações HTTP.You may also need to enable a firewall exception so that the tools can handle HTTP requests.

Com o projeto em execução, você pode testar seu código da mesma forma que você testaria a função implantada.With the project running, you can test your code as you would test deployed function. Para saber mais informações, consulte Estratégias para testar seu código no Azure Functions.For more information, see Strategies for testing your code in Azure Functions. Quando em execução no modo de depuração, os pontos de interrupção são atingidos no Visual Studio, conforme o esperado.When running in debug mode, breakpoints are hit in Visual Studio as expected.

Para saber mais sobre o uso das Ferramentas Básicas do Azure Functions, consulte Codificar e testar o Azure Functions localmente.To learn more about using the Azure Functions Core Tools, see Code and test Azure functions locally.

Publicar no AzurePublish to Azure

Ao publicar do Visual Studio, um dos dois métodos de implantação é usado:When publishing from Visual Studio, one of two deployment methods are used:

Use as etapas a seguir para publicar seu projeto em um aplicativo de funções no Azure.Use the following steps to publish your project to a function app in Azure.

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no nome do projeto e selecione Publicar.In Solution Explorer, right-click the project and select Publish.

  2. Na caixa de diálogo Selecione um destino de publicação, use as opções publicar, conforme especificado na tabela embaixo da imagem:In the Pick a publish target dialog, use the publish options as specified in the table below the image:

    Escolher um destino de publicação

    OpçãoOption DESCRIÇÃODescription
    Plano de consumo do Azure FunctionsAzure Functions Consumption plan Quando você publica seu projeto em um aplicativo de funções executado em um Plano de consumo, você paga apenas pelas execuções do seu aplicativo de funções.When you publish your project to a function app that runs in a Consumption plan, you only pay for executions of your functions app. Outros planos de hospedagem incorrem em custos mais altos.Other hosting plans incur higher costs. Para saber mais, confira Escala e hospedagem do Azure Functions.To learn more, see Azure Functions scale and hosting.
    Criar novoCreate new Um novo aplicativo de funções com recursos relacionados é criado no Azure.A new function app, with related resources, is created in Azure. Quando você escolhe selecionar existente, todos os arquivos no aplicativo de funções existente no Azure são substituídos pelos arquivos do projeto local.When you choose Select Existing, all files in the existing function app in Azure are overwritten by files from the local project. Use essa opção somente quando republicar atualizações para um aplicativo de funções existente.Only use this option when republishing updates to an existing function app.
    Executar com base no arquivo de pacoteRun from package file Seu aplicativo de funções é implantado usando a Implantação de Zip com o modo Run-From-Package habilitado.Your function app is deployed using Zip Deploy with Run-From-Package mode enabled. Essa é a maneira recomendada de executar suas funções, que resulta em um melhor desempenho.This is the recommended way of running your functions, which results in better performance. Quando não estiver usando essa opção, verifique se você interrompeu a execução local do projeto de aplicativo de funções antes de publicar no Azure.When not using this option, make sure to stop your function app project from running locally before you publish to Azure.
  3. Selecione Publicar.Select Publish. Se você ainda não entrou em sua conta do Azure do Visual Studio, selecione Entrar.If you haven't already signed-in to your Azure account from Visual Studio, select Sign-in. Também é possível criar uma conta gratuita do Azure.You can also create a free Azure account.

  4. No Serviço de Aplicativo: Criar, use as configurações de Hospedagem conforme especificadas na tabela embaixo da imagem:In the App Service: Create new dialog, use the Hosting settings as specified in the table below the image:

    Criar caixa de diálogo do Serviço de Aplicativo

    ConfiguraçãoSetting Valor sugeridoSuggested value DescriçãoDescription
    NomeName Nome globalmente exclusivoGlobally unique name Nome que identifica seu novo aplicativo de funções de forma exclusiva.Name that uniquely identifies your new function app. Os caracteres válidos são a-z, 0-9 e -.Valid characters are a-z, 0-9, and -.
    AssinaturaSubscription Escolha sua assinaturaChoose your subscription A assinatura do Azure a utilizar.The Azure subscription to use.
    Grupo de RecursosResource Group myResourceGroupmyResourceGroup Nome do grupo de recursos no qual criar o seu aplicativo de funções.Name of the resource group in which to create your function app. Escolha Novo para criar um novo grupo de recursos.Choose New to create a new resource group.
    Plano de hospedagemHosting Plan Plano de consumoConsumption plan Escolha o Consumo em Tamanho após selecionar Novo para criar um plano sem servidor.Make sure to choose the Consumption under Size after you select New to create a serverless plan. Também, escolha um Local em uma região perto de você ou perto de outros serviços que suas funções acessam.Also, choose a Location in a region near you or near other services your functions access. Quando você executa em um plano diferente de Consumo, deve gerenciar o dimensionamento de seu aplicativo de funções.When you run in a plan other than Consumption, you must manage the scaling of your function app.
    Armazenamento do AzureAzure Storage Conta de armazenamento para uso geralGeneral-purpose storage account Uma conta de armazenamento do Azure é necessária para o tempo de execução de funções.An Azure storage account is required by the Functions runtime. Selecione Novo para criar uma conta de armazenamento para uso geral.Select New to create a general-purpose storage account. Você também pode usar uma conta existente que atenda aos requisitos da conta de armazenamento.You can also use an existing account that meets the storage account requirements.
  5. Selecione Criar para criar um aplicativo de funções e recursos relacionados no Azure com essas configurações e implantar seu código de projeto de função.Select Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  6. Após a conclusão da implantação, anote o valor da URL do Site, que é o endereço do seu aplicativo de funções no Azure.After the deployment is complete, make a note of the Site URL value, which is the address of your function app in Azure.

    Publicar mensagem de êxito

Configurações do aplicativo de funçõesFunction app settings

As configurações que você adicionou no local.settings.json também devem ser adicionadas ao aplicativo de funções no Azure.Any settings you added in the local.settings.json must be also added to the function app in Azure. Essas configurações não são carregadas automaticamente quando você publica o projeto.These settings aren't uploaded automatically when you publish the project.

A maneira mais fácil para carregar as configurações necessárias para o seu aplicativo de função no Azure é usar o link Gerenciar configurações de aplicativo... que é exibido depois que você publica seu projeto com êxito.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.

Isso exibe a caixa de diálogo Configurações de aplicativo para o aplicativo de função, onde você pode adicionar novas configurações do aplicativo ou modificar as existentes.This displays the Application Settings dialog for the function app, where you can add new application settings or modify existing ones.

Local representa um valor de configuração no arquivo local.settings.json e Remoto é a configuração atual no aplicativo de funções no Azure.Local represents a setting value in the local.settings.json file, and Remote is the current setting in the function app in Azure. Escolha Adicionar configuração para criar uma nova configuração de aplicativo.Choose Add setting to create a new app setting. Use o link Inserir valor do local para copiar um valor de configuração para o campo Remoto.Use the Insert value from Local link to copy a setting value to the Remote field. As alterações pendentes serão gravadas no arquivo de configurações local e no aplicativo de funções quando você selecionar OK.Pending changes are written to the local settings file and the function app when you select OK.

Observação

Por padrão, o arquivo local. Settings. JSON não é verificado no controle do código-fonte.By default, the local.settings.json file is not checked into source control. Isso significa que, quando você clona um projeto de funções locais do controle do código-fonte, o projeto não tem um arquivo local. Settings. JSON.This means that when you clone a local Functions project from source control, the project doesn't have a local.settings.json file. Nesse caso, você precisa criar manualmente o arquivo local. Settings. JSON na raiz do projeto para que a caixa de diálogo configurações do aplicativo funcione conforme o esperado.In this case, you need to manually create the local.settings.json file in the project root so that the Application Settings dialog works as expected.

Você também pode gerenciar as configurações de aplicativo em um desses outros modos:You can also manage application settings in one of these other ways:

Funções de monitoramentoMonitoring functions

A maneira recomendada de monitorar a execução de suas funções é a integração do aplicativo de funções com o Azure Application Insights.The recommended way to monitor the execution of your functions is by integrating your function app with Azure Application Insights. Ao criar um aplicativo de funções no portal do Azure, essa integração é realizada por padrão.When you create a function app in the Azure portal, this integration is done for you by default. No entanto, ao criar o aplicativo de funções durante a publicação do Visual Studio, a integração no aplicativo de funções no Azure não é realizada.However, when you create your function app during Visual Studio publishing, the integration in your function app in Azure isn't done.

Para habilitar o Application Insights no aplicativo de funções:To enable Application Insights for your function app:

As funções facilitam a adição da integração do Application Insights a um aplicativo de funções do portal do Azure.Functions makes it easy to add Application Insights integration to a function app from the Azure portal.

  1. No portal, selecione Todos os serviços > Aplicativos de Funções, selecione o aplicativo de funções e, em seguida, selecione a faixa do Application Insights na parte superior da janelaIn the portal, select All services > Function Apps, select your function app, and then select the Application Insights banner at the top of the window

    Habilitar o Application Insights no portal

  2. Crie um recurso do Application Insights usando as configurações especificadas na tabela abaixo da imagem.Create an Application Insights resource by using the settings specified in the table below the image.

    Criar um recurso do Application Insights

    ConfiguraçãoSetting Valor sugeridoSuggested value DescriçãoDescription
    NomeName Nome de aplicativo exclusivoUnique app name É mais fácil usar o mesmo nome que seu aplicativo de funções, que deve ser exclusivo em sua assinatura.It's easiest to use the same name as your function app, which must be unique in your subscription.
    LocalidadeLocation Europa OcidentalWest Europe Se possível, use a mesma região que seu aplicativo de funções ou uma região próxima dela.If possible, use the same region as your function app, or one that's close to that region.
  3. Selecione OK.Select OK. O recurso do Application Insights é criado no mesmo grupo de recursos e assinatura que seu aplicativo de funções.The Application Insights resource is created in the same resource group and subscription as your function app. Depois que o recurso for criado, feche a janela do Application Insights.After the resource is created, close the Application Insights window.

  4. No aplicativo de funções, selecione Configurações do aplicativo e role para baixo até Configurações do aplicativo.Back in your function app, select Application settings, and then scroll down to Application settings. Se você vir uma configuração chamada APPINSIGHTS_INSTRUMENTATIONKEY, isso significa que a integração do Application Insights está habilitada para seu aplicativo de funções em execução no Azure.If you see a setting named APPINSIGHTS_INSTRUMENTATIONKEY, Application Insights integration is enabled for your function app running in Azure.

Para saber mais, consulte Monitorar Azure Functions.To learn more, see Monitor Azure Functions.

Próximas etapasNext steps

Para saber mais sobre as Ferramentas Básicas do Azure Functions, consulte Codificar e testar o Azure Functions localmente.To learn more about the Azure Functions Core Tools, see Code and test Azure functions locally.

Para saber mais sobre como desenvolver funções como bibliotecas de classes do .NET, consulte Referência do desenvolvedor de C# do Azure Functions.To learn more about developing functions as .NET class libraries, see Azure Functions C# developer reference. Este tópico também fornece links para exemplos de como usar atributos para declarar os vários tipos de associações com suporte pelo Azure Functions.This article also links to examples of how to use attributes to declare the various types of bindings supported by Azure Functions.