【发布时间】:2020-10-27 02:10:02
【问题描述】:
我使用 ServiceStack.Redis 使用 C# 创建了一个 Visual Studio (Community 2019) 项目。因为它是 C#,所以我使用 Windows 10(有一个适用于 Windows 的 Redis 版本,但它真的很旧,而且据我所知,它是非官方的,所以我担心这可能是问题所在)。
这是我的代码的摘录:
public class PeopleStorage: IDisposable
{
public PeopleStorage()
{
redisManager = new RedisManagerPool("localhost");
redis = (RedisClient)redisManager.GetClient();
facts = (RedisTypedClient<List<Fact>>)redis.As<List<Fact>>();
}
public List<Fact> GetFacts(int id)
{
string sid = id.ToString();
if (facts.ContainsKey(sid))
return facts[sid];
return accessor.GetFacts(id);
}
private RedisTypedClient<List<Fact>> facts;
private RedisClient redis;
private RedisManagerPool redisManager;
}
尝试在return facts[sid]; 行连接Redis,出现异常:
System.IO.FileLoadException:“无法加载文件或程序集 “System.Runtime.CompilerServices.Unsafe,版本=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 或其中之一 依赖。找到的程序集的清单定义不匹配 大会参考。 (HRESULT 异常:0x80131040)”
(我翻译的可能不准确)
我已尝试更新所有包,从 ServiceStack 包开始,以 System.Runtime.CompilerServices.Unsafe 本身结束。而且,在 NuGet 中不能选择 4.0.4.1 版本,最接近的是 4.0.0,而相关的是 4.0.7。
我不明白为什么它使用这个版本以及如何解决这个问题。
即使是彻底重新安装 Visual Studio 也无济于事。
【问题讨论】:
-
你用的是哪个版本的
ServiceStack.Redis? -
你用的是net framework控制台项目还是net core控制台项目?
标签: c# visual-studio redis nuget servicestack