.net - 无法从程序集 'ServiceStack.Redis,Version=3.9.48.0,Culture=neutral,PublicKeyToken=null 加载类型 'ServiceStack.Redis.RedisSentinel'

标签 .net redis servicestack redis-sentinel servicestack-bsd

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

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

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

在尝试访问 RedisSentinel 实例时,出现以下错误:

Could not load type 'ServiceStack.Redis.RedisSentinel' from assembly 'ServiceStack.Redis, Version=3.9.48.0, Culture=neutral, PublicKeyToken=null

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

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

对此的任何帮助将不胜感激。

谢谢

最佳答案

an anyone please guide how to resolve this issue?

选项:

  • 将您发布的版本更新到 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 的代码随时可能会失败,特别是如果它使用的 API 在 3.9.48 中不存在但在 4.5.4 中存在
  • 如果您发布 4.5.4,那么期望 3.9.48 的代码可能会在任何时候失败,特别是如果它使用的 API 已被删除或有任何重大更改(根据 semver 规则,重大更改之间是允许的3.* 和 4.*)

在一般情况下,我会建议“使用更新的”,因为它可能包含您正在使用的 3.9.48 中存在的功能的错误修复。当然,更新的代码也可能意味着新的错误 :)

关于.net - 无法从程序集 'ServiceStack.Redis,Version=3.9.48.0,Culture=neutral,PublicKeyToken=null 加载类型 'ServiceStack.Redis.RedisSentinel',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44202796/

相关文章:

c++ - Unity3D中的高清视频通话

node.js - 移动应用程序中的套接字身份验证

c# - 如何对表和 View 使用相同的 DTO 外键关系

c# - 为 EntityFramework6.Npgsql 指定数据库连接字符串 - Code First

.net - conhost.exe 貌似内存泄漏

c# - PInvoke - 找不到指定的模块。如何检查缺少的依赖项?

caching - 缓存集群部署拓扑

python - 如何在python中将元素添加到已排序的redis集中

c# - servicestack GlobalRequestFilters 请求 Dto 为 null

servicestack - 使用 VS2013 和 ServiceStack.Client 包 v.4.0.3 缺少命名空间 ServiceClient (ServiceStack.ServiceClient.Web)