Azure 函数需要同一个 DLL 的两个版本

Azure function wants two versions of the same DLL

我有一个 azure 函数,它从我单独创建并上传到函数文件夹的 DLL 调用静态方法,连同它的所有依赖项(发布文件夹中的所有 dll 都上传到 azure 函数)。

当我尝试调用函数时收到错误消息 无法加载文件或程序集“Microsoft.SharePoint.Client.Runtime,版本=16.1.3912.1204

如果我上传此版本的 Microsoft.SharePoint.Client.Runtime,我会收到一条错误消息,提示它再次需要另一个版本: 无法加载文件或程序集“Microsoft.SharePoint.Client.Runtime,版本=16.0.0.0

怎么会这样?它在 Azure 之外成功运行。为什么它需要同一个 DLL 的两个版本?该项目引用 16.1.3912.1204,这是 \bin\release 文件夹中的 dll 版本。

旁注:我的 .NET GAC 文件夹包含版本 16.0.0.0。如果由于某种原因在 Microsoft.SharePoint.Client dll 中它需要引用两个版本,我如何在 azure 函数中包含同一文件的两个版本?

不要尝试手动上传全局 nuget 包。而是参考此线程, 将 nuget 库导入您的 Azure 函数生态系统。

之后,您可以直接使用那些 c# 库,例如,

using Microsoft.SharePoint;

确保所有项目引用都指向包文件夹 (nuget) dll 以消除版本冲突,然后从 bin 文件夹上传所有 DLL 解决了这种情况下的问题。