You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C# Azure Function中无法使用NuGet包问题求助

解决Azure Function无法识别SendGrid NuGet包的问题

我帮你排查几个常见的问题和对应的解决步骤:

1. 修正命名空间大小写错误

你run.csx里写的是using Sendgrid;,但SendGrid官方NuGet包的命名空间是**SendGrid**(大写的G),这会直接导致编译器找不到相关类。另外EmailAddress类实际在SendGrid.Helpers.Mail命名空间下,把引用改成:

using SendGrid;
using SendGrid.Helpers.Mail;

2. 修复代码语法错误

你的代码里var toAddr = new EmailAddress("xxxx", "xxx);少了一个闭合的双引号,这会引发语法错误,修正后应该是:

var toAddr = new EmailAddress("xxxx@xxx.com", "xxx");

3. 确认project.json配置与运行时匹配

你的project.json配置是针对.NET Framework 4.6的,需要确保你的Azure Function App运行时版本设置正确:

  • 进入Azure门户的Function App -> 配置 -> 常规设置 -> 运行时版本,选择.NET Framework 4.6或更高兼容版本

4. 触发NuGet包重新恢复

Azure Function平台会自动读取project.json并恢复包,但偶尔会出现恢复失败的情况:

  • 保存project.json后,等待2-3分钟,查看“监测”->“日志流”,确认是否有Restoring packages for D:\home\site\wwwroot\<你的函数名>\project.json...这类成功恢复的日志
  • 如果恢复失败,登录Kudu控制台(Function App -> 高级工具 -> 启动Kudu),找到site\wwwroot\<你的函数名>\bin目录并删除,然后重新保存project.json触发恢复

5. 验证包是否加载成功

可以在代码里添加日志输出,确认SendGrid类是否能正常初始化:

public static void Run(TimerInfo myTimer, TraceWriter log) {
    log.Info("Starting function...");
    try {
        var client = new SendGridClient("xxx");
        log.Info("SendGridClient initialized successfully!");
        var fromAddr = new EmailAddress("xxx@xxx.com", "xxx");
        var toAddr = new EmailAddress("xxxx@xxx.com", "xxx");
        // 后续发送邮件逻辑
    } catch (Exception ex) {
        log.Error($"Error: {ex.Message}", ex);
    }
}

内容的提问来源于stack exchange,提问作者Dan O'Leary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:02:16