无法从程序集“ServiceStack.Redis、版本=3.9.48.0、文化=中性、PublicKeyToken=null 加载类型'ServiceStack.Redis.RedisSentinel'
Could not load type 'ServiceStack.Redis.RedisSentinel' from assembly 'ServiceStack.Redis, Version=3.9.48.0, Culture=neutral, PublicKeyToken=null
目前在我的应用程序中,我正在尝试实现我已使用 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,我更愿意访问我们已经在其他项目中引用的上述自定义程序集。
如有任何帮助,我们将不胜感激。
谢谢
RedisSentinel
是 ServiceStack.Redis v4 功能。每当您看到 Type not found 错误时,这意味着您正在使用的版本中不存在该 Type。
ServiceStack v3 已有数年历史,您可以通过查看 v3 Source Code
了解它的功能和 类
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,那么在运行时会发生什么取决于哪个版本 loads,即您在包中运送哪个版本。
- 如果您发布 3.9.48,那么期望 4.5.4 的代码随时可能会失败,特别是如果它使用 3.9.48 中不存在但存在于4.5.4
- 如果您发布 4.5.4,那么期望 3.9.48 的代码随时可能会失败,特别是如果它使用已被删除或有任何重大更改的 API(根据 semver 规则) , 允许在 3.* 和 4.*)
之间进行重大更改
在一般情况下,我会建议 "use the newer",因为它可能包含您正在使用的 3.9.48 中存在的功能的错误修复。当然,较新的代码也可能意味着新的错误 :)
目前在我的应用程序中,我正在尝试实现我已使用 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,我更愿意访问我们已经在其他项目中引用的上述自定义程序集。
如有任何帮助,我们将不胜感激。
谢谢
RedisSentinel
是 ServiceStack.Redis v4 功能。每当您看到 Type not found 错误时,这意味着您正在使用的版本中不存在该 Type。
ServiceStack v3 已有数年历史,您可以通过查看 v3 Source Code
了解它的功能和 类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,那么在运行时会发生什么取决于哪个版本 loads,即您在包中运送哪个版本。
- 如果您发布 3.9.48,那么期望 4.5.4 的代码随时可能会失败,特别是如果它使用 3.9.48 中不存在但存在于4.5.4
- 如果您发布 4.5.4,那么期望 3.9.48 的代码随时可能会失败,特别是如果它使用已被删除或有任何重大更改的 API(根据 semver 规则) , 允许在 3.* 和 4.*) 之间进行重大更改
在一般情况下,我会建议 "use the newer",因为它可能包含您正在使用的 3.9.48 中存在的功能的错误修复。当然,较新的代码也可能意味着新的错误 :)