Koda och testa Azure Functions lokalt

Även om du kan utveckla och testa Azure Functions i Azure Portalföredrar många utvecklare en lokal utvecklingsupplevelse. Funktioner gör det enkelt att använda favoritkodredigeraren och utvecklingsverktygen för att skapa och testa funktioner på den lokala datorn. Dina lokala funktioner kan ansluta till Azure-livetjänster och du kan felsöka dem på din lokala dator med hjälp av den fullständiga Functions-körningen.

Den här artikeln innehåller länkar till specifika utvecklingsmiljöer för det språk du föredrar. Den innehåller också viss delad vägledning för lokal utveckling, till exempel att arbeta medlocal.settings.jspå filen.

Lokala utvecklingsmiljöer

Hur du utvecklar funktioner på din lokala dator beror på dina språk- och verktygsinställningar. Miljöerna i följande tabell stöder lokal utveckling:

Miljö Språk Description
Visual Studio Code C# (klassbibliotek)
Isolerad C#-process (.NET 5.0)
JavaScript
PowerShell
Python
Tillägget Azure Functions för VS Code lägger till functions-stöd i VS Code. Kräver Core Tools. Stöder utveckling på Linux, macOS och Windows när du använder version 2.x av Core Tools. Mer information finns i Skapa din första funktion med hjälp av Visual Studio Code.
Kommandotolk eller terminal C# (klassbibliotek)
Isolerad C#-process (.NET 5.0)
JavaScript
PowerShell
Python
Azure Functions Core Tools tillhandahåller grundläggande körning och mallar för att skapa funktioner som möjliggör lokal utveckling. Version 2.x stöder utveckling på Linux, macOS och Windows. Alla miljöer förlitar sig på Core Tools för den lokala Functions-körningen.
Visual Studio 2019 C# (klassbibliotek)
Isolerad C#-process (.NET 5.0)
Verktygen Azure Functions ingår i arbetsbelastningen Azure-utveckling för Visual Studio 2019 och senare versioner. Låter dig kompilera funktioner i ett klassbibliotek och publicera .dll till Azure. Innehåller Core Tools för lokal testning. Mer information finns i Utveckla Azure Functions med Visual Studio.
Maven (olika) Java Maven-arketypen stöder Core Tools för att möjliggöra utveckling av Java-funktioner. Version 2.x stöder utveckling på Linux, macOS och Windows. Mer information finns i Skapa din första funktion med Java och Maven. Stöder även utveckling med Eclipse och IntelliJ IDEA

Viktigt

Blanda inte lokal utveckling med Portal utveckling i samma Function-app. När du skapar och publicerar funktioner från ett lokalt projekt bör du inte försöka att underhålla eller ändra projekt koden i portalen.

Var och en av dessa lokala utvecklingsmiljöer låter dig skapa funktionsappsprojekt och använda fördefinierade Functions-mallar för att skapa nya funktioner. Var och en använder Core Tools så att du kan testa och felsöka dina funktioner mot den verkliga Functions-körningen på din egen dator precis som andra appar. Du kan också publicera funktionsappsprojektet från någon av dessa miljöer till Azure.

Fil för lokala inställningar

I local.settings.jspå filen lagras appinställningar och inställningar som används av lokala utvecklingsverktyg. Inställningar i local.settings.jspå filen används bara när du kör projektet lokalt.

Viktigt

Eftersom local.settings.jspå kan innehålla hemligheter, till exempel anslutningssträngar, bör du aldrig lagra den på en fjärrlagringsplats. Med verktyg som stöder Functions kan du synkronisera inställningar i local.settings.jspå filen med appinställningarna i funktionsappen som projektet distribueras till.

Den lokala inställningsfilen har den här strukturen:

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

De här inställningarna stöds när du kör projekt lokalt:

Inställning Beskrivning
IsEncrypted När den här inställningen är true inställd på krypteras alla värden med en lokal datornyckel. Används med func settings kommandon. Standardvärdet är false. Du kanske vill kryptera filen local.settings.jspå den lokala datorn när den innehåller hemligheter, till exempel tjänstanslutningssträngar. Värden dekrypterar automatiskt inställningarna när den körs. Använd kommandot func settings decrypt innan du försöker läsa lokalt krypterade inställningar.
Values Insamling av programinställningar som används när ett projekt körs lokalt. Dessa nyckel/värde-par (strängsträng) motsvarar programinställningarna i din funktionsapp i Azure, till exempel [AzureWebJobsStorage] . Många utlösare och bindningar har en egenskap som refererar till en appinställning för anslutningssträngar, till exempel Connection för Blob Storage-utlösaren. För de här egenskaperna behöver du en programinställning som definierats i Values matrisen. I följande tabell finns en lista över vanliga inställningar.
Värdena måste vara strängar och inte JSON-objekt eller matriser. Inställningsnamn får inte innehålla ett kolon ( : ) eller en dubbel understrykning ( __ ). Dubbla understrykningstecken reserveras av körningen och kolonet är reserverat för att stödja beroendeinjektion.
Host Inställningar i det här avsnittet anpassar Functions-värdprocessen när du kör projekt lokalt. De här inställningarna skiljer sig från host.jsinställningar, som även gäller när du kör projekt i Azure.
LocalHttpPort Anger standardporten som används när du kör den lokala Functions-värden ( func host start och func run ). --portKommandoradsalternativet har företräde framför den här inställningen. När du till exempel kör i Visual Studio IDE kan du ändra portnumret genom att gå till fönstret "Project-egenskaper -> Debug" och uttryckligen ange portnumret i ett kommando som kan anges i host start --port <your-port-number> fältet "Programargument".
CORS Definierar de ursprung som tillåts för resursdelning mellan ursprung (CORS). Ursprung anges som en kommaavgränsad lista utan blanksteg. Jokertecknet ( * ) stöds, vilket tillåter begäranden från alla ursprung.
CORSCredentials När det här är true inställt på tillåter withCredentials det begäranden.
ConnectionStrings En samling. Använd inte den här samlingen för de anslutningssträngar som används av dina funktionsbindningar. Den här samlingen används endast av ramverk som vanligtvis hämtar anslutningssträngar från avsnittet ConnectionStrings i en konfigurationsfil, till exempel Entity Framework. Anslutningssträngar i det här objektet läggs till i miljön med providertypen System.Data.SqlClient. Objekt i den här samlingen publiceras inte till Azure med andra appinställningar. Du måste uttryckligen lägga till dessa värden i Connection strings samlingen med inställningar för funktionsappen. Om du skapar en i funktionskoden bör du lagra värdet för anslutningssträngen med dina andra anslutningar SqlConnection i Application Inställningar i portalen.

Följande programinställningar kan ingå i matrisen Values när du kör lokalt:

Inställning Värden Beskrivning
AzureWebJobsStorage Storage-kontoanslutningssträng, eller
UseDevelopmentStorage=true
Innehåller anslutningssträngen för ett Azure Storage-konto. Krävs när du använder andra utlösare än HTTP. Mer information finns i [AzureWebJobsStorage] referensen.
När du har Azure Storage Emulator lokalt och du anger till använder Core Tools [AzureWebJobsStorage] UseDevelopmentStorage=true emulatorn. Emulatorn är användbar under utvecklingen, men du bör testa med en faktisk lagringsanslutning före distributionen.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Om du vill inaktivera en funktion när den körs "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" lokalt lägger du till i <FUNCTION_NAME> samlingen, där är namnet på funktionen. Mer information finns i Så här inaktiverar du funktioner i Azure Functions
FUNCTIONS_WORKER_RUNTIME dotnet
node
java
powershell
python
Anger målspråket för Functions-körningen. Krävs för version 2.x och senare av Functions-körningen. Den här inställningen genereras för projektet av Core Tools. Mer information finns i FUNCTIONS_WORKER_RUNTIME referensen.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Anger att PowerShell 7 ska användas när du kör lokalt. Om detta inte anges PowerShell Core 6. Den här inställningen används bara när du kör lokalt. När du kör i Azure bestäms PowerShell-körningsversionen av platskonfigurationsinställningen, som powerShellVersion kan anges i portalen.

Nästa steg