VS2017(15.7.1)切换分支后启动项目,加载LiveUnitTesting.Runtime失败求助
针对VS2017实时单元测试程序集加载失败的解决方案
我之前也碰到过类似的Live Unit Testing加载异常问题,结合VS2017 15.7.1这个版本的特性,给你几个针对性的解决思路:
彻底清理项目输出与VS缓存
分支切换后bin/obj目录很容易残留旧分支的程序集,导致加载混淆:- 手动删除项目下的
bin和obj目录,清空所有编译输出文件 - 关闭VS后,删除
%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_<你的VS实例ID>\ComponentModelCache目录,这个缓存经常会保留旧的程序集绑定规则 - 重启VS后重新生成整个解决方案
- 手动删除项目下的
添加程序集绑定重定向配置
打开项目的app.config(Web项目用web.config),检查是否有针对该程序集的绑定配置,如果没有,手动添加:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.CodeAnalysis.LiveUnitTesting.Runtime" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.7.0.0" newVersion="1.7.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>要是不确定版本号,可以去
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\Live Unit Testing目录下查看实际安装的程序集版本,替换上面的newVersion值。修复或重装Live Unit Testing组件
打开VS Installer,选择"修改"你的VS2017安装:- 找到"测试工具"分类下的"实时单元测试"组件,先取消勾选完成卸载
- 重新勾选该组件并完成安装
这个操作能修复可能损坏的组件文件,确保程序集版本与VS版本完全匹配。
检查分支切换后的项目引用
切换分支后部分引用可能出现异常:- 右键项目选择"管理NuGet程序包",查看是否存在
Microsoft.CodeAnalysis.LiveUnitTesting.Runtime相关包,如有则更新到适配VS2017 15.7.1的版本(通常为1.7.x系列) - 检查项目引用中是否错误指向了
project/bin目录下的程序集,若有则删除该引用,重新添加VS安装目录下的对应程序集
- 右键项目选择"管理NuGet程序包",查看是否存在
关于为何从project/bin加载的说明
这是因为实时单元测试运行时会将所需程序集复制到项目bin目录,分支切换后旧的程序集未被自动清理,而VS的程序集绑定机制会优先加载本地bin目录下的文件,导致加载了与当前VS版本不匹配的旧程序集,最终触发版本错误。
内容的提问来源于stack exchange,提问作者Duran Hsieh
相关产品推荐
相关产品推荐

