使用AspNetCore.SignalR.Client时缺失System.Numerics.Vectors v4.1.4问题
别慌,这个加载错误在使用SignalR Client配合.NET Framework 4.7时挺常见的,主要是版本兼容性或者程序集绑定配置的问题,我给你几个靠谱的解决步骤:
先安装匹配版本的System.Numerics.Vectors
打开NuGet包管理器,先卸载项目中已有的System.Numerics.Vectors(如果存在的话),然后安装指定的4.1.4版本。也可以直接在Package Manager Console里执行命令:Install-Package System.Numerics.Vectors -Version 4.1.4添加程序集绑定重定向
.NET Framework项目经常会遇到程序集版本冲突,你需要在项目的App.config文件里添加绑定重定向,让系统自动把旧版本的引用指向你安装的4.1.4版本。把这段代码加到<configuration>节点内:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" /> </dependentAssembly> </assemblyBinding> </runtime>清理缓存并重建项目
有时候项目的bin/obj文件夹里会残留旧版本的程序集,导致编译冲突。右键解决方案选择「清理解决方案」,然后手动删除项目下的bin和obj文件夹,最后重新编译整个项目。确认SignalR Client版本的兼容性
如果你安装的是较新的Microsoft.AspNetCore.SignalR.Client版本,可能对.NET Framework 4.7的支持不够友好。建议选择3.x系列的稳定版本,比如3.1.28,这个版本和.NET Framework 4.7兼容性很好。安装命令:Install-Package Microsoft.AspNetCore.SignalR.Client -Version 3.1.28
如果做完这些还是有问题,你可以检查项目的引用列表,确认System.Numerics.Vectors的引用路径是否指向NuGet安装的版本,而不是系统自带的旧版本。
内容的提问来源于stack exchange,提问作者Rick Kozak

