In last week’s post, Azure Functions Introduction, we created a new Azure Function App with a single function triggered via HTTP. The Portal is great for the initial creation of a function, but what happens when your needs change? For instance, you might want to store your functions in a repo with the rest of the code for your application. In this post, we are going to walk through taking our portal created function and getting it downloaded where it can be edited in Visual Studio.
Download App Content
From the Azure Portal select App Services.
Next, select the Function App you want to get the code for.
The detail of the Function App will load and at the top of the screen click on the Download app content option.
On the popup that shows select Content and Visual Studio Project and then click the Download button.
Once clicking download you will get a zip file containing everything in your Function App. Extract the files and double click the project file to open it in Visual Studio.
Changing a Function
The project will have a folder per function that exist in your applications. In our example, you would see a HttpTrigger1 directory and inside that directory, the code for the actual function is in the run.csx file. Looking at the code you will see that it is the same that you would have seen in the portal. Here is the code.
#r "Newtonsoft.Json" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string name = req.Query["name"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name = name ?? data?.name; return name != null ? (ActionResult)new OkObjectResult($"Hello, {name}") : new BadRequestObjectResult("Please pass a name on the query string or in the request body"); }
At this point, you could change anything you wanted about the application. I’m going to change the return value.
Before: (ActionResult)new OkObjectResult($"Hello, {name}") After: (ActionResult)new OkObjectResult($"Yo, {name}")
Pushing Changes back to Azure
Now that we have a change to our function how do we get that change back to Azure? Head back to the overview page for your Azure Function App and click the Get publish profile link.
In Visual Studio right-click on the project and select Publish.
In the publish dialog click the Import Profile button and select the profile you download from Azure.
Once the profile is imported you can then click the Publish button to push any changes to your Azure Function App.
At this point, if you execute your function you should see the changes you made in Visual Studio.
Wrapping Up
While the above works it isn’t actually very friendly in Visual Studio since the function is a csx file instead of a cs file that normal C# uses. For next week look for an example of starting a function app from Visual Studio to see if it results in a project that will be easier to maintain.
Also published on Medium.