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

Azure Functions集成SendGrid在Visual Studio中编译失败求助

解决Visual Studio 2017 15.7.1中Azure Functions集成SendGrid的编译错误

我帮你分析下这个问题——你遇到的System.IO.FileNotFoundException本质是Azure Functions核心依赖包版本不匹配,尤其是Microsoft.Azure.WebJobs的版本和项目里其他相关组件没对齐。先看你的示例代码:

[FunctionName("SendEmail")]
public static void SendEmail([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] 
[SendGrid()] out Mail message)
{
    message = new Mail { Subject = "From VS" };
    var personalization = new Personalization();
    // change to email of recipient
    personalization.AddTo(new Email("joe@foo.com"));
    Content content = new Content { Type = "text/plain", Value = "testing from VS." };
    message.AddContent(content);
    message.AddPersonalization(personalization);
}

编译时抛出的错误:

System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Azure.WebJobs, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

下面是具体的修复步骤,按顺序操作即可:

1. 统一Azure Functions核心包版本

Visual Studio 2017 15.7.1对应的Azure Functions工具链适配v2 runtime,你需要确保以下关键包的版本完全对齐:

  • 安装Microsoft.NET.Sdk.Functions 2.2.0版本(这是Azure Functions项目的核心SDK,和你报错的2.2.0.0版本完全匹配)
  • 安装Microsoft.Azure.WebJobs.Extensions.SendGrid 3.0.0版本(这个版本和v2 runtime及WebJobs 2.2.0兼容)
  • 确保Microsoft.Azure.WebJobs包的版本也是2.2.0,最好让SDK自动管理这个依赖,不要单独安装更高或更低版本

2. 清理并强制还原NuGet包

有时候NuGet缓存会导致依赖引用异常,按以下步骤操作:

  • 右键项目 → 管理NuGet程序包,先卸载所有Azure Functions相关的包(包括SendGrid扩展、WebJobs、SDK)
  • 删除项目根目录下的obj和bin文件夹
  • 重新安装上述指定版本的NuGet包,或者在Package Manager Console运行:
    Install-Package Microsoft.NET.Sdk.Functions -Version 2.2.0
    Install-Package Microsoft.Azure.WebJobs.Extensions.SendGrid -Version 3.0.0
    

3. 移除冲突的独立包

如果你的项目里单独安装了Microsoft.Azure.WebJobs.Core或者其他非SDK管理的WebJobs组件,直接卸载它们——Microsoft.NET.Sdk.Functions已经包含了所有核心依赖,单独安装会导致版本冲突。

4. 验证SendGrid SDK版本

你的代码里用到的Mail、Personalization类来自SendGrid官方SDK,确保SendGrid包的版本是9.12.0(这个版本和WebJobs SendGrid扩展3.0.0完美兼容),不要安装最新的SendGrid SDK版本,避免API不匹配。

做完这些步骤后,重新编译项目,应该就能解决这个文件找不到的错误了。

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:24