Azure 函数需要同一 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 包。而是参考此线程,如何在 Azure 函数中使用 NuGet 包?将 nuget 库导入 Azure 函数生态系统。

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

using Microsoft.SharePoint;

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