从现有 .Net 应用程序向 Azure 服务总线主题发送消息时,出现以下异常
<块引用>“Azure.Messaging.ServiceBus.Core.ClientLibraryInformation”的类型初始值设定项引发异常。 无法加载文件或程序集“System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)
以上在新的 .Net Core 应用程序中运行良好。我无法找出问题所在。
答案 0 :(得分:0)
在 .NET 中,当同一个程序集的两个版本被加载到同一个程序集加载上下文中时,就会发生依赖冲突。这种冲突是任何使用版本依赖项的软件中都会发生的常见问题。因为没有简单的解决方案,而且很多依赖解析框架试图以不同的方式解决问题,所以这种情况通常被称为“依赖地狱”。
由于项目几乎从不故意或直接依赖相同依赖项的两个版本这一事实,冲突问题变得更加复杂。相反,该项目有两个或多个依赖项,每个依赖项都需要相同依赖项的不同版本。
例如,假设您的 .NET 应用程序 DuckBuilder
引入了两个依赖项,以执行其部分功能,如下所示:
因为 Contoso.ZipTools
和 Fabrikam.FileHelpers
都依赖于不同版本的 Newtonsoft.Json
,所以可能会存在依赖冲突,具体取决于每个依赖项的加载方式。
答案 1 :(得分:0)
我不得不手动更新引用。当我这样做时,该方法开始正常工作。