Mac上使用VS Code创建.NET 8独立模式Azure Timer函数时终端显示0个函数被发现
Mac上使用VS Code创建.NET 8独立模式Azure Timer函数时终端显示0个函数被发现
我在Mac上用VS Code创建了一个.NET 8独立模式的C# Timer函数,但是终端一直显示找不到任何函数:
[2024-03-10T14:43:25.386Z] Reading functions metadata
[2024-03-10T14:43:25.386Z] 0 functions found
[2024-03-10T14:43:25.393Z] 0 functions loaded
我看一些演示里都会正常列出函数,但我的环境里就是看不到。运行调试的时候,会短暂弹出一个提示窗口,但很快又回到0函数的状态。我也看过一篇Stack Overflow的相关帖子(不过我不是迁移场景),但还是没解决问题。
几个可以尝试的解决方向:
- 核对函数的标记是否完整:先检查你的Timer函数类是不是
public的,而且有没有正确添加[FunctionName("你的Timer函数名")]特性,独立模式下Azure Functions对这些标记的校验很严格,缺一个都可能导致函数识别失败。 - 检查项目文件的关键配置:打开你的
.csproj文件,确认以下几点:- 项目SDK引用是
<Project Sdk="Microsoft.NET.Sdk.Functions"> TargetFramework设置为net8.0- 包含
<AzureFunctionsVersion>v4</AzureFunctionsVersion>和<FunctionsWorkerRuntime>dotnet-isolated</FunctionsWorkerRuntime>这两个配置项
- 项目SDK引用是
- 清理重建项目并重启VS Code:有时候缓存会干扰函数识别,先在终端执行
dotnet clean清理项目,再执行dotnet build重新构建,之后关闭VS Code再重新打开试试。 - 升级Azure Functions Core Tools:Mac上如果Core Tools版本过旧,可能和.NET 8独立模式不兼容。你可以用
func --version查看当前版本,要是低于v4.x的最新版,用Homebrew升级的话执行brew upgrade azure-functions-core-tools@4即可。 - 验证调试配置文件:查看
.vscode/launch.json里的配置,确认调试项是针对dotnet-isolated模式的,比如program路径是否指向项目生成的dll文件,或者command是否设置为func、args是否为start。
如果试过这些还是没解决,可以把你的函数代码片段和.csproj的内容贴出来,这样能更精准地找到问题所在~
备注:内容来源于stack exchange,提问作者lcj
相关产品推荐
相关产品推荐

