将 Azure Function 应用程序升级到 Dotnet 6 后出现 ddl 不匹配问题

A ddl mismatch issue after upgrading Azure Function app to Dotnet 6

我刚刚将 Azure 函数应用程序从 Dot Net Core v3.1 升级到 Dot Net v6,包括更新所有 NuGet 包。

解决方案可以编译,但是当我 运行 它时,我收到了这个错误:

error CS1705: Assembly 'xxxxx' with identity 'xxxxx, Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=null' uses 'Microsoft.Azure.WebJobs.Host, Version=3.0.33.0, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than 
referenced assembly 'Microsoft.Azure.WebJobs.Host' 
with identity 'Microsoft.Azure.WebJobs.Host, Version=3.0.32.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

我看不到任何不匹配的版本或依赖项。我已经清除了 NuGet 缓存,删除了 bin 目录并重建了。

有什么建议吗?

是的!当您将 Azure Functions 项目从 .NET Core 3.1 升级到 .NET 6 时,您可能会遇到此错误。要解决此问题,您需要在 .csproj 文件中将 Azure Functions 版本更改为 v4。

此外,系统中应安装 Azure Functions Core Tools 版本 4 以使用 Azure Functions .NET 6。

简而言之,一些依赖项由 Azure Functions SDK 加载到内存中,因此您的库将无法使用相同库的更新版本

其他几步是

  • 根据 MSFT Doc 中给出的目标框架,检查您的 NuGet 包管理器 Microsoft.NET.Sdk.Functions 是否具有正确的版本。
  • 确保所有 dll's 都是针对正确的版本编译的。
  • 关于 .NET C# 中的 CS1705 错误,请参阅 here 以了解更多信息,例如此错误的原因和修复 - 由 Microsoft 提供。