Azure DevOps CI Test Adapter运行失败:强名称验证失败问题咨询
MSTest CI 构建报错解决方案
调用执行器'executor://mstestadapter/v2'时发生异常:未能加载文件或程序集'Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'或它的某一依赖项,强名称验证失败(异常来自 HRESULT: 0x8013141A)
该报错的核心原因是CI环境中VSTest任务默认优先加载全局安装的旧版本MSTest适配器,和项目中引用的2.2.5版本Nuget适配器存在版本冲突,导致强名称校验不通过。可按以下步骤排查解决:
- 调整VSTest@2任务配置,强制使用项目Nuget路径下的适配器,禁用全局VSIX扩展加载。将你的YAML配置修改为如下内容:
- task: VSTest@2 inputs: platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' pathToCustomTestAdapters: '$(System.DefaultWorkingDirectory)/**/packages/MSTest.TestAdapter.2.2.5/build/*' otherConsoleOptions: '/UseVsixExtensions:false'
- 校验测试项目的包引用配置。打开测试项目的
.csproj文件,确认不存在直接引用14.0.0.0版本Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices程序集的配置,所有测试相关依赖均通过Nuget安装,无本地程序集引用。如果存在旧版本的绑定重定向规则,删除后重新执行Nuget还原。 - 检查CI代理环境。如果使用自托管CI代理,确认代理机器没有单独安装旧版本MSTest适配器的VSIX扩展,也没有在GAC全局缓存中安装14.0.0.0版本的相关程序集。如果使用微软托管代理,确保在VSTest任务前添加了Nuget还原任务,所有依赖包都正确还原到工作目录。
- (可选)添加绑定重定向兼容。如果以上步骤都无法解决问题,可以在测试项目的
app.config文件中添加绑定重定向规则,将旧版本的程序集请求重定向到当前使用的2.2.5版本:
<dependentAssembly> <assemblyIdentity name="Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.2.5.0" newVersion="2.2.5.0" /> </dependentAssembly>
内容的提问来源于stack exchange,提问作者Jason Coyne
相关产品推荐
相关产品推荐

