gpt4 book ai didi

c# - 无法加载文件或程序集System.Runtime.CompilerServices.Unsafe

转载 作者:行者123 更新时间:2023-12-03 06:37:19 27 4
gpt4 key购买 nike

我使用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: "Could not load file or assembly"System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" or one of it'sdependences. The found Assembly's manifest definition does not matchthe Assembly reference. (Exception from HRESULT: 0x80131040)"


(根据我的翻译,可能不准确)
我尝试过更新所有软件包,从 ServiceStack软件包开始,以 System.Runtime.CompilerServices.Unsafe本身结束。此外,您不能在NuGet中选择4.0.4.1版本,最接近的版本是4.0.0,而相关的版本是4.0.7。
我不明白为什么它使用此版本以及如何解决此问题。
即使重新安装Visual Studio也无济于事。

最佳答案

Could not load file or assembly System.Runtime.CompilerServices.Unsafe


看来您已经安装了 System.Runtime.CompilerServices.Unsafe nuget包 4.5.3版本。并且它对应于 System.Runtime.CompilerServices.Unsafe.dll组件版本 4.0.4.1
建议
1)请尝试将 System.Runtime.CompilerServices.Unsafe版本 4.0.4.1注册到GAC中,以便系统能够使用它。
  • 的身份运行VS2019的开发人员命令提示符管理员
  • 类型:
    cd xxxxx (the path of the the System.Runtime.CompilerServices.Unsafe 4.0.4.1)

    gacutil /i System.Runtime.CompilerServices.Unsafe.dll

  • 2)如果将Net Framework项目与 xxx.config文件一起使用,则可以使用 bindingRedirect
    将它们添加到 app.config文件或 web.config文件中:
    <configuration>  
    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe"
    publicKeyToken="b03f5f7f11d50a3a"
    culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.4.1"
    newVersion="4.0.4.1"/>
    </dependentAssembly>
    </assemblyBinding>
    </runtime>
    </configuration>
    除了之外,如果将 System.Runtime.CompilerServices.Unsafe nuget软件包版本更新为较新的版本,则还应该更改bindingRedirect程序集版本。
    您可以引用 System.Runtime.CompilerServices.Unsafe的这些程序集版本 4.5.xSystem.Runtime.CompilerServices.Unsafe nuget软件包的版本,而 4.0.x.xSystem.Runtime.CompilerServices.Unsafe.dll程序集的版本。
    4.5.0 is 4.0.4.0 
    4.5.1 is 4.0.4.0
    4.5.2 is 4.0.4.0
    4.5.3 is 4.0.4.1
    4.6.0 is 4.0.5.0
    4.7.0 is 4.0.6.0
    4.7.1 is 4.0.6.1

    关于c# - 无法加载文件或程序集System.Runtime.CompilerServices.Unsafe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62764744/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com