首页 > 解决方案 > 如何在本地加速调试 C# Azure Function?是

问题描述

我已经在本地创建了 ac# Azure 函数,如下所述:https ://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-function-vs-code

这是使用 VS Code 和 Omnisharp。

当按 F5 调试一个函数时,大约需要 15 秒来做各种事情,然后我可以运行该函数。

有什么办法可以更改代码并重新加载它,而不必再次启动整个omnisharp?

我问,因为这似乎是可能的:

  1. 在 Azure 门户中,保存和运行功能不到 1 秒。
  2. 在本地运行该功能时,可以对其进行调试,设置断点等。
  3. 有一个名为“重新启动”的按钮,但它似乎没有做任何事情

在此处输入图像描述

标签: c#azure-functionsazure-functions-core-tools

解决方案


本地开发目前不支持热重载,但您可以这样做。

本地开发和门户之间的最大区别之一是您在本地使用预编译的 C#(.cs 文件),而门户使用 C# 脚本(.csx 文件)。这就是为什么有时语法会有些不同的原因(即 #r "Newtonsoft.Json" 以引入外部程序集)。这样做的缺点是启动一个函数比较慢,因为它每次都必须编译代码。这就是为什么从长远来看使用本地开发的预编译库更便宜的原因。

脚本文件是在调用脚本时而不是在启动之前编译的。使用预编译函数进行热重载会非常困难。当我测试它时,在调试会话运行时编辑文件时确实出现了更改。您可能会考虑在开发过程中这样做,然后在部署之前将代码移植到类库中,以利用更快的启动时间。您可以在此处阅读有关 C# 脚本的更多信息:https ://docs.microsoft.com/en-us/archive/blogs/cdndevs/adding-c-scripting-to-your-development-arsenal-part-1

您可以在首选项中更改 Functions 项目创建的语言。更改此设置后,它将一直存在,直到您更改或删除首选项:https ://docs.microsoft.com/en-us/azure/azure-functions/functions-develop-vs-code?tabs=csharp#c -脚本项目

请记住,您不能将预编译函数与 C# 脚本函数混合使用,因此您需要创建一个单独的函数应用程序以使用脚本来部署开发和类库。


推荐阅读