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

Function Azure函数需要相同DLL的两个版本,function,azure,reference,.net-assembly,Function,Azure,Reference,.net Assembly,我有一个azure函数,它从我单独创建并上载到函数文件夹的DLL调用静态方法,以及它的所有依赖项(发布文件夹中的所有DLL都上载到azure函数) 当我尝试调用函数时,我收到一个错误 无法加载文件或程序集“Microsoft.SharePoint.Client.Runtime,版本=16.1.3912.1204” 如果我上载此版本的Microsoft.SharePoint.Client.Runtime,我会收到一个错误,它希望再次使用其他版本: 无法加载文件或程序集“Microsoft.Shar

我有一个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#库,例如


确保所有项目引用指向packages文件夹(nuget)dll以消除版本冲突,然后从bin文件夹上载所有dll解决了此问题。

我使用直接URL打开了函数应用程序内应用程序服务编辑器:{functionAppName}.scm.azurewebsites.net/dev/wwwroot/,然后尝试为其他版本的DLL创建子文件夹,但应用程序无法获取该子文件夹。它只在函数文件夹中查找。您可能需要使用程序集绑定重定向,您可能需要利用
AppDomain.CurrentDomain.AssemblyResolve
来解决问题。此外,这里还有一些类似的问题,您可以遵循。我通过确保所有项目引用都指向包dll(从包子文件夹中)来解决此问题为了消除潜在的版本冲突,然后从bin文件夹上载所有DLL解决了此问题。您可以发布您的答案,并为可能遇到类似问题的其他社区成员总结您的解决方案。奇怪的是,这不起作用;我包含了nuget软件包的完整列表,但收到了无法找到程序集的警告。最终,确保所有项目引用指向包dll以消除版本冲突,然后从bin文件夹上载所有dll解决了此问题。@Shane;很高兴,成功了。看起来问题在您使用同一库的多个版本的情况下是典型的。
using Microsoft.SharePoint;