Scrivere codici per Funzioni di Azure e testarle in localeCode and test Azure Functions locally

Sebbene il portale di Azure offra un set di strumenti completo per lo sviluppo e il test delle funzioni di Azure, molti sviluppatori preferiscono un'esperienza di sviluppo locale.While the [Azure portal] provides a full set of tools for developing and testing Azure Functions, many developers prefer a local development experience. Funzioni di Azure semplifica l'uso dell'editor di codice e degli strumenti di sviluppo locale preferiti per sviluppare e testare le funzioni nel computer locale.Azure Functions makes it easy to use your favorite code editor and local development tools to develop and test your functions on your local computer. Le funzioni possono attivare gli eventi in Azure ed è possibile eseguire il debug delle funzioni JavaScript e C# nel computer locale.Your functions can trigger on events in Azure, and you can debug your C# and JavaScript functions on your local computer.

Se si sviluppatori di Visual Studio C#, Funzioni di Azure si integra anche con Visual Studio 2017.If you are a Visual Studio C# developer, Azure Functions also integrates with Visual Studio 2017.

Importante

Non combinare lo sviluppo locale con lo sviluppo del portale nella stessa app per le funzioni.Do not mix local development with portal development in the same function app. Quando si creano e si pubblicano le funzioni da un progetto locale, non tentare di gestire o modificare il codice di progetto nel portale.When you create and publish functions from a local project, you should not try to maintain or modify project code in the portal.

Installare gli strumenti di base per Funzioni di AzureInstall the Azure Functions Core Tools

Strumenti di base di Funzioni di Azure è una versione locale del runtime di Funzioni di Azure che è possibile eseguire nel computer di sviluppo locale.[Azure Functions Core Tools] is a local version of the Azure Functions runtime that you can run on your local development computer. Non è un emulatore o simulatore.It's not an emulator or simulator. Si tratta dello stesso runtime presente in Funzioni di Azure.It's the same runtime that powers Functions in Azure. Sono disponibili due versioni di Strumenti di base di Funzioni di Azure, uno per la versione 1.x del runtime e uno per la versione 2.x.There are two versions of Azure Functions Core Tools, one for version 1.x of the runtime and one for version 2.x. Entrambe le versioni vengono fornite come pacchetto npm.Both versions are provided as an npm package.

Nota

Prima di installare la versione, è necessario installare NodeJS, che include npm.Before you install either version, you must install NodeJS, which includes npm. Per la versione 2.x degli strumenti, sono supportate solo le versioni Node.js 8.5 e successive.For version 2.x of the tools, only Node.js 8.5 and later versions are supported.

Versione di runtime 1.xVersion 1.x runtime

La versione originale degli strumenti usa il runtime 1.x di Funzioni.The original version of the tools uses the Functions 1.x runtime. Questa versione usa il .NET Framework ed è supportata solo nei computer Windows.This version uses the .NET Framework and is only supported on Windows computers. Usare il comando seguente per installare gli strumenti in versione 1.x:Use the following command to install the version 1.x tools:

npm install -g azure-functions-core-tools

Versione di runtime 2.xVersion 2.x runtime

La versione 2.x degli strumenti usa il runtime di Funzioni di Azure 2.x basata su .NET Core.Version 2.x of the tools uses the Azure Functions runtime 2.x that is built on .NET Core. Questa versione è supportata su tutte le piattaforme che .NET Core 2.x è in grado di supportare.This version is supported on all platforms .NET Core 2.x supports. Utilizzare questa versione per lo sviluppo multipiattaforma e quando il runtime 2.x di Funzioni è obbligatorio.Use this version for cross-platform development and when the Functions runtime 2.x is required.

Importante

Prima di installare Strumenti di base di Funzioni di Azure, installare .NET Core 2.0.Before installing Azure Functions Core Tools, install .NET Core 2.0.

Il runtime 2.0 di Funzioni di Azure è disponibile in anteprima e attualmente non tutte le funzionalità di Funzioni di Azure sono supportate.Azure Functions runtime 2.0 is in preview, and currently not all features of Azure Functions are supported. Per altre informazioni, vedere Problemi noti del runtime 2.0 di Funzioni di AzureFor more information, see Azure Functions runtime 2.0 known issues

Usare il comando seguente per installare gli strumenti in versione 2.0:Use the following command to install the version 2.0 tools:

npm install -g azure-functions-core-tools@core

Per l'installazione su Ubuntu utilizzare sudo, come indicato di seguito:When installing on Ubuntu use sudo, as follows:

sudo npm install -g azure-functions-core-tools@core

Per l'installazione su macOS e Linux, è necessario includere il flag unsafe-perm, come indicato di seguito:When installing on macOS and Linux, you may need to include the unsafe-perm flag, as follows:

sudo npm install -g azure-functions-core-tools@core --unsafe-perm true

Eseguire Strumenti di base di Funzioni di AzureRun Azure Functions Core Tools

Strumenti di base di Funzioni di Azure aggiunge gli alias di comando seguenti:Azure Functions Core Tools adds the following command aliases:

  • funcfunc
  • azfunazfun
  • azurefunctionsazurefunctions

Uno di questi alias può essere utilizzato dove func è visualizzato negli esempi.Any of these aliases can be used where func is shown in the examples.

func init MyFunctionProj

Creare un progetto Funzioni localeCreate a local Functions project

Quando è eseguito in locale, un progetto Funzioni è una directory che presenta i file host.json e local.settings.json.When running locally, a Functions project is a directory that has the files host.json and local.settings.json. Questa directory è l'equivalente di un'app per le funzioni in Azure.This directory is the equivalent of a function app in Azure. Per altre informazioni sulla struttura delle cartelle di Funzioni di Azure, vedere la Guida per sviluppatori di Funzioni di Azure.To learn more about the Azure Functions folder structure, see the Azure Functions developers guide.

Nella finestra del terminale o da un prompt dei comandi, eseguire il comando seguente per creare il progetto e l’archivio Git locale:In the terminal window or from a command prompt, run the following command to create the project and local Git repository:

func init MyFunctionProj

L'output ha un aspetto simile all'esempio seguente:The output looks like the following example:

Writing .gitignore
Writing host.json
Writing local.settings.json
Created launch.json
Initialized empty Git repository in D:/Code/Playground/MyFunctionProj/.git/

Per creare il progetto senza un archivio Git locale, utilizzare l’opzione --no-source-control [-n].To create the project without a local Git repository, use the --no-source-control [-n] option.

File di impostazioni localiLocal settings file

Il file local.settings.json archivia le impostazioni di app, le stringhe di connessione e le impostazioni per Strumenti di base di Funzioni di Azure.The file local.settings.json stores app settings, connection strings, and settings for Azure Functions Core Tools. Presenta la struttura seguente:It has the following structure:

{
  "IsEncrypted": false,   
  "Values": {
    "AzureWebJobsStorage": "<connection string>", 
    "AzureWebJobsDashboard": "<connection string>" 
  },
  "Host": {
    "LocalHttpPort": 7071, 
    "CORS": "*" 
  },
  "ConnectionStrings": {
    "SQLConnectionString": "Value"
  }
}
ImpostazioneSetting DescrizioneDescription
IsEncryptedIsEncrypted Se impostato su true, tutti i valori sono crittografati tramite una chiave del computer locale.When set to true, all values are encrypted using a local machine key. Usato con i comandi func settings.Used with func settings commands. Il valore predefinito è false.Default value is false.
ValoriValues Raccolta di impostazioni dell'applicazione usate durante l'esecuzione in locale.Collection of application settings used when running locally. AzureWebJobsStorage e AzureWebJobsDashboard sono solo esempi; per un elenco completo vedere il riferimento sulle impostazioni dell’app.AzureWebJobsStorage and AzureWebJobsDashboard are examples; for a complete list, see app settings reference.
HostHost Le impostazioni in questa sezione consentono di personalizzare il processo host di Funzioni durante l'esecuzione in locale.Settings in this section customize the Functions host process when running locally.
LocalHttpPortLocalHttpPort Consente di impostare la porta predefinita usata durante l'esecuzione nell'host locale di Funzioni, ovvero func host start e func run.Sets the default port used when running the local Functions host (func host start and func run). L'opzione --port della riga di comando ha la precedenza su questo valore.The --port command-line option takes precedence over this value.
CORSCORS Definisce le origini consentite per la condivisione di risorse tra le origini (CORS).Defines the origins allowed for cross-origin resource sharing (CORS). Le origini sono elencate in un elenco delimitato dalla virgola senza spazi.Origins are supplied as a comma-separated list with no spaces. È supportato il valore del carattere jolly (\) che consente le richieste provenienti da qualsiasi origine.The wildcard value (****) is supported, which allows requests from any origin.
ConnectionStringsConnectionStrings Contiene le stringhe di connessione del database per le funzioni.Contains the database connection strings for your functions. Le stringhe di connessione in questo oggetto vengono aggiunte all'ambiente con il tipo di provider di System.Data.SqlClient.Connection strings in this object are added to the environment with the provider type of System.Data.SqlClient.

La maggior parte dei trigger e delle associazioni presentano una proprietà Connection che mappa il nome di una variabile di ambiente o di un'impostazione dell'app.Most triggers and bindings have a Connection property that maps to the name of an environment variable or app setting. Per ogni proprietà di connessione, deve essere definita un'impostazione dell'app nel file local.settings.json.For each connection property, there must be app setting defined in local.settings.json file.

Queste impostazioni possono anche essere lette nel codice come variabili di ambiente.These settings can also be read in your code as environment variables. In C# usare System.Environment.GetEnvironmentVariable o ConfigurationManager.AppSettings.In C#, use System.Environment.GetEnvironmentVariable or ConfigurationManager.AppSettings. In JavaScript usare process.env.In JavaScript, use process.env. Le impostazioni specificate come variabile di ambiente di sistema hanno la precedenza sui valori nel file local.settings.json.Settings specified as a system environment variable take precedence over values in the local.settings.json file.

Le impostazioni nel file local.settings.json vengono usate solo per gli strumenti delle funzioni durante l'esecuzione in locale.Settings in the local.settings.json file are only used by Functions tools when running locally. Per impostazione predefinita, queste impostazioni non vengono migrate automaticamente quando il progetto viene pubblicato in Azure.By default, these settings are not migrated automatically when the project is published to Azure. Utilizzare lo switch --publish-local-settings durante la pubblicazione per assicurarsi che queste impostazioni vengano aggiunte all'app della funzione in Azure.Use the --publish-local-settings switch when you publish to make sure these settings are added to the function app in Azure.

Quando non è impostata alcuna stringa di connessione di archiviazione valida per AzureWebJobsStorage, viene visualizzato il messaggio di errore seguente:When no valid storage connection string is set for AzureWebJobsStorage, the following error message is shown:

Valore mancante per AzureWebJobsStorage in local.settings.json.Missing value for AzureWebJobsStorage in local.settings.json. È necessario per tutti i trigger diversi da HTTP.This is required for all triggers other than HTTP. È possibile eseguire "func azure functionapp fetch-app-settings " o specificare una stringa di connessione in local.settings.json.You can run 'func azure functionapp fetch-app-settings ' or specify a connection string in local.settings.json.

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.

Configurare le impostazioni applicazioneConfigure app settings

Per impostare un valore per le stringhe di connessione, è possibile eseguire una delle opzioni seguenti:To set a value for connection strings, you can do one of the following options:

  • Immettere la stringa di connessione da Azure Storage Explorer.Enter the connection string from Azure Storage Explorer.
  • Usare uno di questi comandi:Use one of the following commands:

    func azure functionapp fetch-app-settings <FunctionAppName>
    
    func azure storage fetch-connection-string <StorageAccountName>
    

    Per entrambi i comandi è necessario innanzitutto accedere ad Azure.Both commands require you to first sign-in to Azure.

Creare una funzioneCreate a function

Eseguire il comando seguente per creare una funzione:To create a function, run the following command:

func new

func new supporta gli argomenti opzionali seguenti:func new supports the following optional arguments:

ArgomentoArgument DescrizioneDescription
--language -l Il linguaggio di programmazione del modello, come C#, F# o JavaScript.The template programming language, such as C#, F#, or JavaScript.
--template -t Il nome del modello.The template name.
--name -n Il nome della funzione.The function name.

Ad esempio, per creare un trigger HTTP JavaScript, eseguire:For example, to create a JavaScript HTTP trigger, run:

func new --language JavaScript --template HttpTrigger --name MyHttpTrigger

Per creare una funzione attivata dalla coda, eseguire:To create a queue-triggered function, run:

func new --language JavaScript --template QueueTrigger --name QueueTriggerJS

Eseguire funzioni localmenteRun functions locally

Per eseguire un progetto Funzioni, eseguire l'host di Funzioni.To run a Functions project, run the Functions host. L'host abilita i trigger per tutte le funzioni del progetto:The host enables triggers for all functions in the project:

func host start

func host start supporta le opzioni seguenti:func host start supports the following options:

OpzioneOption DescrizioneDescription
--port -p La porta locale su cui ascoltare.The local port to listen on. Valore predefinito: 7071.Default value: 7071.
--debug <type> Le opzioni sono VSCode e VS.The options are VSCode and VS.
--cors Un elenco delimitato dalla virgola di origini CORS, senza spazi.A comma-separated list of CORS origins, with no spaces.
--nodeDebugPort -n La porta per il debugger di nodo da usare.The port for the node debugger to use. Predefinito: un valore di launch.json o 5858.Default: A value from launch.json or 5858.
--debugLevel -d Il livello di traccia della console (off, verbose, info, warning o error).The console trace level (off, verbose, info, warning, or error). Predefinito: Info.Default: Info.
--timeout -t Il timeout per l'host di Funzioni da avviare, in secondi.The timeout for the Functions host to start, in seconds. Impostazione predefinita: 20 secondi.Default: 20 seconds.
--useHttps Associare https://localhost:{port} anziché http://localhost:{port}.Bind to https://localhost:{port} rather than to http://localhost:{port}. Per impostazione predefinita, questa opzione crea un certificato attendibile nel computer in uso.By default, this option creates a trusted certificate on your computer.
--pause-on-error Sospendere per l'input aggiuntivo prima dell'uscita dal processo.Pause for additional input before exiting the process. Utile quando si avvia Strumenti di base di Funzioni di Azure da un ambiente di sviluppo integrato (IDE).Useful when launching Azure Functions Core Tools from an integrated development environment (IDE).

Quando viene avviato l'host di Funzioni, restituisce come output l'URL delle funzioni attivate da HTTP:When the Functions host starts, it outputs the URL of HTTP-triggered functions:

Found the following functions:
Host.Functions.MyHttpTrigger

ob host started
Http Function MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger

Eseguire il debug in Visual Studio Code o Visual StudioDebug in VS Code or Visual Studio

Per associare un debugger, passare l'argomento --debug.To attach a debugger, pass the --debug argument. Per eseguire il debug di funzioni JavaScript, usare Visual Studio Code.To debug JavaScript functions, use Visual Studio Code. Per le funzioni C#, usare Visual Studio.For C# functions, use Visual Studio.

Per eseguire il debug di funzioni C#, usare --debug vs.To debug C# functions, use --debug vs. È anche possibile usare Strumenti di Visual Studio 2017 per Funzioni di Azure.You can also use Azure Functions Visual Studio 2017 Tools.

Per avviare l'host e configurare il debug di JavaScript, eseguire:To launch the host and set up JavaScript debugging, run:

func host start --debug vscode

Quindi, in Visual Studio Code, nella visualizzazione Debug, selezionare Attach to Azure Functions (Associa a Funzioni di Azure).Then, in Visual Studio Code, in the Debug view, select Attach to Azure Functions. È possibile associare punti di interruzione, controllare variabili ed eseguire il codice passo per passo.You can attach breakpoints, inspect variables, and step through code.

Debug di JavaScript con Visual Studio Code

Passaggio di dati di test a una funzionePassing test data to a function

Per testare le funzioni localmente, avviare l'host di Funzioni e chiamare gli endpoint nel server locale usando richieste HTTP.To test your functions locally, you start the Functions host and call endpoints on the local server using HTTP requests. L'endpoint chiamato dipende dal tipo di funzione.The endpoint you call depends on the type of function.

Nota

Gli esempi in questo argomento usano lo strumento cURL per inviare richieste HTTP dal terminale o da un prompt dei comandi.Examples in this topic use the cURL tool to send HTTP requests from the terminal or a command prompt. È possibile usare lo strumento preferito per inviare richieste HTTP al server locale.You can use a tool of your choice to send HTTP requests to the local server. Lo strumento cURL è disponibile per impostazione predefinita nei sistemi basati su Linux.The cURL tool is available by default on Linux-based systems. In Windows è necessario prima scaricare e installare lo strumento cURL.On Windows, you must first download and install the cURL tool.

Per informazioni più generali sui test delle funzioni, vedere Strategie per il test del codice in Funzioni di Azure.For more general information on testing functions, see Strategies for testing your code in Azure Functions.

Funzioni attivate tramite HTTP e webhookHTTP and webhook triggered functions

È possibile chiamare l'endpoint seguente per eseguire localmente funzioni attivate tramite HTTP e webhook:You call the following endpoint to locally run HTTP and webhook triggered functions:

http://localhost:{port}/api/{function_name}

Assicurarsi di usare lo stesso nome server e la stessa porta su cui è in ascolto l'host di Funzioni.Make sure to use the same server name and port that the Functions host is listening on. Questi valori sono visualizzati nell'output generato all'avvio dell'host di Funzioni.You see this in the output generated when starting the Function host. È possibile chiamare questo URL usando qualsiasi metodo HTTP supportato dal trigger.You can call this URL using any HTTP method supported by the trigger.

Il comando cURL seguente attiva la funzione di avvio rapido MyHttpTrigger da una richiesta GET con il parametro name passato nella stringa di query.The following cURL command triggers the MyHttpTrigger quickstart function from a GET request with the name parameter passed in the query string.

curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks

L'esempio seguente è la stessa funzione chiamata da una richiesta POST passando name nel corpo della richiesta:The following example is the same function called from a POST request passing name in the request body:

curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'

Si noti che è possibile effettuare richieste GET da un browser passando dati nella stringa di query.Note that you can make GET requests from a browser passing data in the query string. Per tutti gli altri metodi HTTP è necessario usare cURL, Fiddler, Postman o uno strumento analogo per i test HTTP.For all other HTTP methods, you must use cURL, Fiddler, Postman, or a similar HTTP testing tool.

Funzione attivate non da HTTPNon-HTTP triggered functions

Per tutti i tipi di funzioni diverse dai trigger HTTP e dai webhook, è possibile testare localmente le funzioni chiamando un endpoint di amministrazione.For all kinds of functions other than HTTP triggers and webhooks, you can test your functions locally by calling an administration endpoint. Chiamando questo endpoint con una richiesta HTTP POST sul server locale si attiva la funzione.Calling this endpoint with an HTTP POST request on the local server triggers the function. È facoltativamente possibile passare dati di test all'esecuzione nel corpo del messaggio della richiesta POST.You can optionally pass test data to the execution in the body of the POST request. Questa funzionalità è analoga alla scheda Test del portale di Azure.This functionality is similar to the Test tab in the Azure portal.

Chiamare l'endpoint di amministrazione seguente per attivare funzioni non HTTP:You call the following administrator endpoint to trigger non-HTTP functions:

http://localhost:{port}/admin/functions/{function_name}

Per passare dati di test all'endpoint di amministrazione di una funzione, è necessario fornire i dati nel corpo di un messaggio di richiesta POST.To pass test data to the administrator endpoint of a function, you must supply the data in the body of a POST request message. Il corpo del messaggio deve avere il formato JSON seguente:The message body is required to have the following JSON format:

{
    "input": "<trigger_input>"
}

Il valore <trigger_input> contiene dati nel formato previsto dalla funzione.The <trigger_input> value contains data in a format expected by the function. L'esempio cURL seguente è una richiesta POST per una funzione QueueTriggerJS.The following cURL example is a POST to a QueueTriggerJS function. In questo caso l'input è una stringa che equivale al messaggio previsto nella coda.In this case, the input is a string that is equivalent to the message expected to be found in the queue.

curl --request POST -H "Content-Type:application/json" --data '{"input":"sample queue data"}' http://localhost:7071/admin/functions/QueueTriggerJS

Uso del comando func run nella versione 1.xUsing the func run command in version 1.x

Importante

Il comando func run non è supportato nella versione 2.x degli strumenti.The func run command is not supported in version 2.x of the tools. Per altre informazioni, vedere l'argomento Come specificare le versioni del runtime per Funzioni di Azure.For more information, see the topic How to target Azure Functions runtime versions.

È anche possibile richiamare una funzione direttamente tramite func run <FunctionName> e offrire dati di input per la funzione.You can also invoke a function directly by using func run <FunctionName> and provide input data for the function. Questo comando è simile all'esecuzione di una funzione con la scheda Test nel portale di Azure.This command is similar to running a function using the Test tab in the Azure portal.

func run supporta le opzioni seguenti:func run supports the following options:

OpzioneOption DescrizioneDescription
--content -c Contenuto inline.Inline content.
--debug -d Associare un debugger al processo host prima di eseguire la funzione.Attach a debugger to the host process before running the function.
--timeout -t Tempo di attesa (in secondi) fino a quando l'host locale di Funzioni è pronto.Time to wait (in seconds) until the local Functions host is ready.
--file -f Il nome del file da usare come contenuto.The file name to use as content.
--no-interactive Non richiede input.Does not prompt for input. Utile per scenari di automazione.Useful for automation scenarios.

Ad esempio, per chiamare una funzione attivata da HTTP e passare il corpo del contenuto, eseguire il comando seguente:For example, to call an HTTP-triggered function and pass content body, run the following command:

func run MyHttpTrigger -c '{\"name\": \"Azure\"}'

Pubblicazione in AzurePublish to Azure

Per pubblicare un progetto Funzioni in un'app per le funzioni in Azure, usare il comando publish:To publish a Functions project to a function app in Azure, use the publish command:

func azure functionapp publish <FunctionAppName>

È possibile usare le opzioni seguenti:You can use the following options:

OpzioneOption DescrizioneDescription
--publish-local-settings -i Pubblicare le impostazioni di local.settings.json in Azure, suggerendo di sovrascrivere eventuali impostazioni esistenti.Publish settings in local.settings.json to Azure, prompting to overwrite if the setting already exists.
--overwrite-settings -y Deve essere usato con -i.Must be used with -i. Sovrascrive AppSettings in Azure con il valore locale se diverso.Overwrites AppSettings in Azure with local value if different. Viene suggerito il valore predefinito.Default is prompt.

Questo comando consente di pubblicare un'app per le funzioni esistente in Azure.This command publishes to an existing function app in Azure. Si verifica un errore se <FunctionAppName> non esiste nella propria sottoscrizione.An error occurs when the <FunctionAppName> doesn't exist in your subscription. Per informazioni su come creare un'app per le funzioni dal prompt dei comandi o dalla finestra del terminale usando l'interfaccia della riga di comando di Azure, vedere Creare un'app per le funzioni per l'esecuzione senza server.To learn how to create a function app from the command prompt or terminal window using the Azure CLI, see Create a Function App for serverless execution.

Il comando publish carica il contenuto della directory del progetto Funzioni.The publish command uploads the contents of the Functions project directory. Se si eliminano i file in locale, il comando publish non li elimina da Azure.If you delete files locally, the publish command does not delete them from Azure. È possibile eliminare i file in Azure usando lo strumento Kudu nel portale di Azure.You can delete files in Azure by using the Kudu tool in the [Azure portal].

Importante

Quando si crea un'app per le funzioni in Azure, questa utilizza la versione 1.x del runtime di Funzioni per impostazione predefinita.When you create a function app in Azure, it uses version 1.x of the Function runtime by default. Per fare in modo che l’app per le funzioni utilizzi la versione 2.x del runtime, aggiungere l'impostazione dell'applicazione FUNCTIONS_EXTENSION_VERSION=beta.To make the function app use version 2.x of the runtime, add the application setting FUNCTIONS_EXTENSION_VERSION=beta.
Utilizzare il seguente codice dell’interfaccia della riga di comando di Azure per aggiungere questa impostazione all'app per le funzioni:Use the following Azure CLI code to add this setting to your function app:

az functionapp config appsettings set --name <function_app> \
--resource-group myResourceGroup \
--settings FUNCTIONS_EXTENSION_VERSION=beta   

Passaggi successiviNext steps

Strumenti di base di Funzioni di Azure è open source ed è ospitato su GitHub.Azure Functions Core Tools is open source and hosted on GitHub.
Per registrare una richiesta per un bug o una funzionalità aprire un problema di GitHub.To file a bug or feature request, open a GitHub issue.