我最近从 .NET Core 3.1 迁移到 .NET 5.0(使用隔离/进程外运行时) 对于 C# 中的 Azure Function 项目。一切都按预期进行。但是,每当我调试时,我的断点都不会命中。为什么我以前可以,但现在无法调试 Azure Function 应用程序?
如果您使用的是 Visual Studio 16.10 或更高版本,则在 Visual Studio 中进行调试非常简单。
微软更新的步骤如下:
Visual Studio 与 Azure Functions Core Tools 集成,以便您
可以使用完整的 Azure Functions 在本地测试您的函数
运行。
-
要运行函数,请在 Visual Studio 中按 F5。您可能需要启用防火墙例外,以便工具可以处理 HTTP
要求。当您运行时,永远不会强制执行授权级别
本地运行。
-
从 Azure Functions 运行时输出复制函数的 URL 并运行请求。欢迎使用 Functions 消息是
函数运行成功并写入日志时显示
运行时输出。
-
要停止调试,请在 Visual Studio 中按 Shift+F5。
验证该函数在本地正确运行后
计算机,是时候将项目发布到 Azure 了。
以下部分仅适用于您使用 Visual Studio 版本 16.9 或更早版本的情况。我强烈建议升级 Visual Studio,而不是使用这种“PITA”方法。
(Please 查看Andrii的回答以获得替代解决方案)
在网上进行了大量研究后,我了解到 .NET 5 for Azure Functions 使用的隔离进程默认不支持调试。要在 Visual Studio 中执行此操作,你需要按照以下步骤操作(链接曾经有效,但现已更新)。
- 在 Visual Studio 中打开您的解决方案
- 在 Visual Studio 中打开 PowerShell(查看 -> 终端,或 Ctrl-`)
- 导航到您的项目
cd MyProject
- 在启用调试的情况下启动该功能
func start –-dotnet-isolated-debug
此时,您应该看到终端输出中打印了一个 PID,类似于以下内容
Functions:
HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
For detailed output, run func with --verbose flag.
[2021-03-09T08:41:41.904Z] Azure Functions .NET Worker (PID: 81720) initialized in debug mode. Waiting for debugger to attach...
- 打开附加进程(打开 -> 调试)窗口,然后选择在控制台输出中找到的 PID
此时,断点有效并将被命中断点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)