Azure Functions CLI创建C# ServiceBusTrigger函数遇模板缺失及文档疑问
问题原因分析
你遇到的「找不到ServiceBusTrigger模板」的问题,大概率是因为**.NET Framework环境下的C# Service Bus触发器模板名称并非ServiceBusTrigger**,而是带有空格的完整名称,比如Service Bus Queue Trigger或Service Bus Topic Trigger;另外也可能是你的Azure Functions CLI版本过旧,导致模板不全。
解决步骤
确认CLI版本并更新
先检查当前CLI版本:func --version如果版本较旧,建议更新到最新稳定版(Windows下可通过Chocolatey或重新下载安装包完成更新)。
查看所有可用模板
直接用CLI命令就能列出当前环境下所有可用的模板,这是最准确的方式:func templates list执行后会输出类似这样的结构,你能清晰看到C#语言下所有支持的模板名称:
Language: C#
Templates:- Azure Blob Storage Trigger
- Azure Queue Storage Trigger
- Service Bus Queue Trigger
- Service Bus Topic Trigger
...
使用正确的模板名称创建函数
根据上面列出的模板名称,用带引号的方式指定模板(因为名称含空格),比如创建Service Bus队列触发器:func new --language "C#" --template "Service Bus Queue Trigger" --name MyServicebusTrigger如果是Topic触发器,就把模板名称换成
"Service Bus Topic Trigger"。交互式创建(更简单的方式)
如果你记不清模板名称,可以直接执行不带参数的func new,进入交互式向导:func new然后跟着提示一步步选择语言、模板、函数名称,完全不用手动输入模板名称,避免拼写错误。
关于模板列表的文档
其实最实时、最准确的模板列表就是通过func templates list命令获取的,因为模板会随着CLI版本和扩展包的更新而变化。另外,在执行func new的交互式模式中,也能直观看到所有可用选项。如果你需要官方参考内容,本地CLI的帮助命令func new --help也会列出相关说明,不过直接用func templates list是最便捷的方式。
内容的提问来源于stack exchange,提问作者fUrious

