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

.NET Core Azure Function缺失SharePointPnP依赖集求助

解决.NET Core Azure Function中SharePointPnPCoreOnline依赖缺失问题

嘿,作为.NET Core和Azure Functions新手遇到这种依赖问题确实头疼,我来帮你一步步解决!

问题根源分析

你安装的SharePointPnPCoreOnline 2.22.1801是针对**.NET Framework**开发的旧版PnP包,对.NET Core的支持非常有限,这就是为什么会出现依赖项SharePointPnP.IdentityModel.Extensions 1.2.3.0找不到的问题——旧包在.NET Core环境下无法正确加载所有依赖,甚至部分依赖本身就不兼容.NET Core。


推荐解决方案:改用官方支持.NET Core的PnP Core SDK

这是最彻底的解决方法,微软现在官方推荐用PnP Core SDK来处理SharePoint Online的操作,完美支持.NET Core/.NET 5+和Azure Functions。

步骤1:卸载旧版NuGet包

打开Package Manager Console,执行命令卸载旧包:

Uninstall-Package SharePointPnPCoreOnline -Version 2.22.1801

步骤2:安装新版PnP Core SDK包

安装核心包和身份验证包(根据你的认证方式选择,下面是基础组合):

Install-Package PnP.Core
Install-Package PnP.Core.Auth

提示:可以去NuGet查看这两个包的最新稳定版本号,替换成具体版本号安装更稳妥

步骤3:适配代码到新SDK

旧版的代码逻辑和新版差异不大,这里给个简单的Azure Function中初始化SharePoint上下文的示例:

using PnP.Core.Services;
using PnP.Core.Auth;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

public class StoreInDatabase
{
    private readonly ILogger<StoreInDatabase> _logger;

    public StoreInDatabase(ILogger<StoreInDatabase> logger)
    {
        _logger = logger;
    }

    [Function("StoreInDatabase")]
    public async Task Run([TimerTrigger("0 */5 * * * *")] MyInfo myTimer)
    {
        _logger.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

        // 初始化认证管理器
        var authManager = new AuthenticationManager();
        // 这里用用户名密码认证(仅适合测试,生产环境推荐证书/Managed Identity)
        using var context = await authManager.GetContextAsync(
            "https://your-tenant.sharepoint.com/sites/your-site",
            "your-username@tenant.onmicrosoft.com",
            "your-password");

        // 执行SharePoint操作,比如获取网站标题
        var webTitle = await context.Web.GetAsync(p => p.Title);
        _logger.LogInformation($"SharePoint site title: {webTitle}");
    }
}

临时应急方案(不推荐长期使用)

如果你暂时不想切换SDK,可以尝试手动安装缺失的依赖包,但要做好可能遇到其他兼容性问题的准备:

  1. 安装指定版本的缺失依赖:
Install-Package SharePointPnP.IdentityModel.Extensions -Version 1.2.3.0
  1. 确保Azure Function项目正确复制所有依赖:
    打开你的.csproj文件,在<PropertyGroup>节点中添加以下配置,确保所有依赖项都被复制到输出目录:
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  1. 重新发布或本地运行项目,检查问题是否解决。

总结

强烈推荐切换到PnP Core SDK,不仅解决当前的依赖问题,还能获得更好的性能、更丰富的功能和官方持续维护支持,完全适配.NET Core和Azure Functions环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:27:44