servicestack,redis-sentinel,servicestack-bsd,.net,Redis,servicestack,Redis Sentinel,Servicestack Bsd" /> servicestack,redis-sentinel,servicestack-bsd,.net,Redis,servicestack,Redis Sentinel,Servicestack Bsd" />

.net 无法加载类型';ServiceStack.Redis.RedisSentinel';来自组件';ServiceStack.Redis,版本=3.9.48.0,区域性=中立,PublicKeyToken=null

.net 无法加载类型';ServiceStack.Redis.RedisSentinel';来自组件';ServiceStack.Redis,版本=3.9.48.0,区域性=中立,PublicKeyToken=null,.net,redis,servicestack,redis-sentinel,servicestack-bsd,.net,Redis,servicestack,Redis Sentinel,Servicestack Bsd,目前,在我的应用程序中,我正在尝试实现我使用RedisSentinel的应用程序缓存 我们有一个通用程序集,它为Redis实现了所有代码和配置,该程序集的ServiceStack版本为4.5.4 我在我的项目中引用了相同的程序集(DLL),但是我们有ServiceStack 3.9.48,目前没有升级它的计划 尝试访问RedisSentinel实例时,我遇到以下错误: 无法从程序集“ServiceStack.Redis,版本=3.9.48.0,区域性=中性,PublicKeyToken=null

目前,在我的应用程序中,我正在尝试实现我使用RedisSentinel的应用程序缓存

我们有一个通用程序集,它为Redis实现了所有代码和配置,该程序集的ServiceStack版本为4.5.4

我在我的项目中引用了相同的程序集(DLL),但是我们有ServiceStack 3.9.48,目前没有升级它的计划

尝试访问RedisSentinel实例时,我遇到以下错误:

无法从程序集“ServiceStack.Redis,版本=3.9.48.0,区域性=中性,PublicKeyToken=null”加载类型“ServiceStack.Redis.RedisSentinel”

谁能指导如何解决这个问题

最终目标是在我使用ServiceStack 3.9.48的应用程序中使用RedisSentinel,我更愿意访问上面提到的自定义程序集,我们已经在其他项目中引用了该程序集

在此方面的任何帮助都将不胜感激


感谢您,RedisSentinel是v4的一项功能。每当您看到“找不到类型”错误时,这意味着您正在使用的版本中不存在该类型

ServiceStack v3已有几年历史,您可以通过查看

有人请指导如何解决此问题吗

选项:

  • 更新您发布到4.5.4的版本(并执行升级过程中所需的任何工作)
  • 不要使用3.9.48中不存在的任何API功能
    • 强制执行此操作的一种方法是降级第一个程序集以使用该版本
  • 为两个任务使用两个完全隔离的过程(从技术上讲,你可以用应用程序域来完成,但这太混乱了):一个发布并引用3.9.48,一个发布并引用4.5.4
基本上,您只能将一个版本的dll加载到应用程序域中。如果同时引用4.5.4和3.9.48,那么运行时发生的情况取决于加载的版本,即在包中提供的版本

  • 如果您发布了3.9.48,那么期望4.5.4的代码可能会在任何时候失败,特别是如果它使用了3.9.48中不存在但4.5.4中存在的API
  • 如果您发布了4.5.4,那么期望3.9.48的代码可能会在任何时候失败,特别是如果它使用的API已被删除或有任何异常更改(根据semver规则,异常更改允许在3.*和4.*之间)
在一般情况下,我建议“使用较新版本”,因为它可能包含针对您正在使用的3.9.48中存在的功能的错误修复。当然,更新的代码也可能意味着新的bug:)