【问题标题】:How to speed up debugging C# Azure Function locally? Is如何在本地加速调试 C# Azure Function?是
【发布时间】:2020-01-17 08:51:02
【问题描述】:

我已经在本地创建了一个 c# 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-functions azure-functions-core-tools


【解决方案1】:

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

本地开发与门户之间的最大区别之一是,您在本地使用的是预编译的 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-script-projects

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

【讨论】:

  • 非常感谢您花时间解释。您是否建议将语言更改为 C# 脚本?我不确定我是否理解所有第 2 段。同样在“记住”你的意思是他们可以不能混合?
  • 感谢您的反馈。如果您想要热重载,切换到脚本项目应该可以工作,但据我所知,我们并不正式支持它。这就是在门户中编写代码更新得如此之快的原因。我在答案中添加了一篇关于 C# 脚本的博客文章,希望能帮助解释它是什么。想想 Powershell 之类的东西,它只是用 C# 的轻松版本编写的。它们混合在同一个 Functions 应用程序中 - 就像您不能混合不同的语言(如 Javascript 和 Python)一样。你必须选择其中一个。
  • 提醒一下,为此请使用 Azure 扩展功能创建一个新功能
  • 考虑到 NET6 现在支持本地热重载(也在 Visual Studio 之外),我怎样才能让本地 Azure Functions 开发访问它?
猜你喜欢
  • 2018-02-06
  • 2022-12-04
  • 2018-08-21
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多