Xamarin.Forms项目无报错生成失败,输出版本冲突及元数据缺失告警
问题根因
两个报错存在因果关联:System.Numerics.Vectors 程序集版本冲突导致你的.NET Standard公共类库编译失败,后续依赖该类库的项目无法找到生成完成的dll文件,进而抛出CS0006元数据缺失错误。
修复步骤
- 清理本地缓存
先关闭Visual Studio,手动删除整个解决方案目录下所有项目的bin、obj文件夹,再删除Nuget全局缓存路径C:\Users\Lenovo\.nuget\packages下的system.numerics.vectors、system.text.json对应版本的文件夹,避免旧版本引用残留干扰编译。 - 统一Nuget包版本
重新打开Visual Studio,右键解决方案选择「管理解决方案的NuGet程序包」,在「已安装」标签下找到System.Numerics.Vectors包,将所有项目引用的该包版本统一升级为4.1.3.0。本次冲突的根源是你安装的System.Text.Json 5.0.2依赖4.1.3版本的System.Numerics.Vectors,但项目默认引用的是2.0.5版本的程序集,版本不匹配触发了MSB3277告警。 - 添加绑定重定向规则
打开你的.NET Standard类库项目下的app.config文件,若不存在则右键项目新建「应用程序配置文件」,在文件中添加如下配置:
<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.3.0" newVersion="4.1.3.0" /> </dependentAssembly> </assemblyBinding> </runtime>
- 重新生成解决方案
右键解决方案选择「清理解决方案」,清理完成后再点击「生成解决方案」即可。
内容的提问来源于stack exchange,提问作者Steven-Carrot
相关产品推荐
相关产品推荐

