升级到 EntLib6 但现在缓存块破坏了一切。我能挽回吗?
Upgraded to EntLib6 but now Caching block is breaking everything. Can I salvage it?
所以我将一些项目从企业库 5 升级到 6。一切似乎都很顺利,直到我们第一次测试并且一些访问缓存块的代码开始抛出异常:
System.TypeLoadException: Could not load type
'Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer'
from assembly 'Microsoft.Practices.EnterpriseLibrary.Common,
Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
经过大量谷歌搜索,我能够收集到以下信息:
- EnterpriseLibrary.Caching 已从企业库中删除
- 由于 EnterpriseLibraryContainer 执行依赖项解析的方式,它也已从 MSEL 中删除
所以简而言之,问题是缓存块是库的最后一个版本并且依赖于不再存在的东西。
除了重写整个缓存层之外,还有什么办法可以挽救这个问题吗?我可以 运行 MSEL 5.0 和 MSEL 6.0 一起使用以恢复丢失的对象吗?还有其他想法吗?
更新:
在迁移指南中找到以下内容:
If your application uses either the Caching Application Block, the
Cryptography Application Block, or the Security Application Block, you
must provide alternative implementations of the functionality you use
from these blocks. For more information, see the section “Blocks
Removed in Version 6” below.
所以我读这个 "Well... you're kinda screwed." 所以我想我更新的问题是 "Have any of you found a quick solution for this?"
事实证明,Caching 块为 CacheManager 使用了一个工厂,该工厂已从 EntLib 6 中完全删除。为了克服这个问题,我不得不重新实现 ICacheManager 并改用它。我换掉了它,这样做,我能够挽救产品代码并完全删除缓存块。
所以我将一些项目从企业库 5 升级到 6。一切似乎都很顺利,直到我们第一次测试并且一些访问缓存块的代码开始抛出异常:
System.TypeLoadException: Could not load type 'Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer' from assembly 'Microsoft.Practices.EnterpriseLibrary.Common, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
经过大量谷歌搜索,我能够收集到以下信息:
- EnterpriseLibrary.Caching 已从企业库中删除
- 由于 EnterpriseLibraryContainer 执行依赖项解析的方式,它也已从 MSEL 中删除
所以简而言之,问题是缓存块是库的最后一个版本并且依赖于不再存在的东西。
除了重写整个缓存层之外,还有什么办法可以挽救这个问题吗?我可以 运行 MSEL 5.0 和 MSEL 6.0 一起使用以恢复丢失的对象吗?还有其他想法吗?
更新: 在迁移指南中找到以下内容:
If your application uses either the Caching Application Block, the Cryptography Application Block, or the Security Application Block, you must provide alternative implementations of the functionality you use from these blocks. For more information, see the section “Blocks Removed in Version 6” below.
所以我读这个 "Well... you're kinda screwed." 所以我想我更新的问题是 "Have any of you found a quick solution for this?"
事实证明,Caching 块为 CacheManager 使用了一个工厂,该工厂已从 EntLib 6 中完全删除。为了克服这个问题,我不得不重新实现 ICacheManager 并改用它。我换掉了它,这样做,我能够挽救产品代码并完全删除缓存块。