gpt4 book ai didi

c# - Azure Function 找不到它应该使用的文件/dll

转载 作者:行者123 更新时间:2023-12-03 05:23:21 25 4
gpt4 key购买 nike

我有一个 azure 的网络作业,曾经运行良好。当我添加我工作的公司的内部 nuget 并使用它时,我收到以下错误:

Could not load file or assembly 'System.Threading.Tasks.Dataflow, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.

奇怪的是,内部 nuget 和之前默认存在于该项目中的 nuget 都使用 System.Threading.Tasks.Dataflow,版本=5.0.0.0

enter image description here

最佳答案

当 .NET(仅限 Windows 的 .NET Framework)首次创建时,它有一个称为“强命名”的概念,该概念使程序集版本成为程序集标识的一部分(不仅仅是名称,还包括公钥)。在 .NET Framework 中,当 A.dll 引用 B.dll 时,运行时 B.dll 的版本必须与编译 A.dll 的版本相匹配。解决这个问题的方法是在 app.config 或 web.config 文件中使用绑定(bind)重定向。

在 .NET Core 中,他们不再强制执行此操作,但仍然进行检查,以确保在磁盘上找到的程序集的版本高于编译时引用的版本。

这是相关的,因为您使用的是 Microsoft.NET.Sdk.Functions 版本 3.0.13,它面向 .NET 3.1。因此,我假设您的 Azure Functions 应用程序在 .NET Core 3.1 上运行。我不知道 .NET 3.1 运行时中附带的 System.Threading.Tasks.Dataflow 的程序集版本是什么,但我希望它是版本 3.something。

虽然 NuGet 包版本不必与程序集版本匹配,但通常情况下,主要(有时是次要)版本确实匹配,特别是对于 System.* 包/程序集。

将 2+2 放在一起,您正在 .NET Core 3.1 上运行,它具有 System.Threading.Tasks.Dataflow.dll 版本 3.something,但您的 some.Kafka.dll 程序集是针对 System.Threading 编译的。 Tasks.Dataflow.dll 版本 5.something。由于编译时引用是运行时可用版本的更高版本,因此 .NET 程序集加载器拒绝使用它。

现在有两件可操作的事情。

首先,您可以执行以下三件事之一来修复您的项目。使用面向 .NET 5 或更高版本的 Azure Functions 较新版本。或者,使用旧版本的whatever.Kafka 包,该包不依赖于比.NET Core 3.1 运行时提供的版本更高的BCL(基类库)程序集。最后,我猜测项目的 bin 目录中不存在 dll 的原因是因为这个问题:https://github.com/Azure/azure-functions-host/issues/5894

其次,联系此 Kafka 包的包所有者,并告知他们不需要使用 Dataflow NuGet 包。 .NET Core 1.0 已将其内置到 BCL 中,因此仅 .NET Standard 和 .NET Framework 项目需要该包。如果此 Kafka 包确实支持 .NET Framework 或 .NET Standard,那么如果它们更改其 PackageReference 以包含 Condition="'$(TargetFrameworkIdentifier) != '.NETCoreApp' ",则该包将是仅在.NET Framework和.NET Standard中使用,BCL版本的包将用于.NET Core和.NET 5及更高版本。如果他们使用任何其他 System.* 包(在运行时附带),他们应该执行相同的操作。当然,如果包所有者拒绝删除 Dataflow 作为包依赖项,或者如果有其他包将 Dataflow 作为传递包引入,那么您就会陷入困境。但通过告知 Kafka 包所有者这一点,他们至少有机会改进他们的包。

关于c# - Azure Function 找不到它应该使用的文件/dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70607119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com