BDD - SpecFlow Troubleshooting:Unable to find plugin in the plugin search path: SpecRun

2023-10-12 08:59

本文主要是介绍BDD - SpecFlow Troubleshooting:Unable to find plugin in the plugin search path: SpecRun,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BDD - SpecFlow Troubleshooting:Unable to find plugin in the plugin search path: SpecRun

  • 引言
  • Issue 描述
  • 按顺序排摸检查
    • 1. 包是否 Download 到 NuGet packages 文件夹
    • 2. 查看中间缓存包
    • 3. 项目 \bin\Debug 是否存在 DLL
  • 快速解决方案
    • 1. 清空依赖包文件夹
    • 2. Restore NuGet Packages
    • 3. 重新 Build Solution

引言

Visual Studio 项目用到 NuGet 管理项目中有需要的各种依赖包,有时会遇到找不到依赖包的问题,本文通过遇到的 Specflow 问题 “ Unable to find plugin in the plugin search path: SpecRun ” 来进行分析和解决,以后遇到类似的,也可以按同样的方式进行排摸解决。

Issue 描述

创建一个 SpecFlow + SpecRun 项目,NuGet 安装好了 SpecFlow 和 SpecRun 相关依赖包,但是在创建 Feature 文件进行保存时,就会发生异常 Unable to find plugin in the plugin search path: SpecRun

Error: Exception has been thrown by the target of an invocation. -> Unable to find plugin in the plugin search path: SpecRun. Please check http://go.specflow.org/doc-plugins for details.
Exception: System.Reflection.TargetInvocationException->TechTalk.SpecFlow.SpecFlowException
StackTrace:at TechTalk.SpecFlow.Generator.Plugins.GeneratorPluginLocator.LocatePluginAssembly(PluginDescriptor pluginDescriptor)at TechTalk.SpecFlow.Generator.Plugins.GeneratorPluginLoader.LoadPlugin(PluginDescriptor pluginDescriptor)at TechTalk.SpecFlow.Generator.GeneratorContainerBuilder.LoadPlugin(PluginDescriptor pluginDescriptor, IGeneratorPluginLoader pluginLoader, GeneratorPluginEvents generatorPluginEvents)at TechTalk.SpecFlow.Generator.GeneratorContainerBuilder.LoadPlugins(ObjectContainer container, IGeneratorConfigurationProvider configurationProvider, SpecFlowConfigurationHolder configurationHolder, GeneratorPluginEvents generatorPluginEvents, SpecFlowProjectConfiguration specFlowConfiguration)at TechTalk.SpecFlow.Generator.GeneratorContainerBuilder.CreateContainer(SpecFlowConfigurationHolder configurationHolder, ProjectSettings projectSettings)at TechTalk.SpecFlow.Generator.TestGeneratorFactory.CreateGenerator(ProjectSettings projectSettings)at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)at SpecFlow.VisualStudio.SpecFlowConnector.ReflectionExtensions.ReflectionCallMethod[T](Object obj, String methodName, Type[] parameterTypes, Object[] args) in D:\a\1\s\Connectors\SpecFlow.VisualStudio.SpecFlowConnector\ReflectionExtensions.cs:line 27at SpecFlow.VisualStudio.SpecFlowConnector.ReflectionExtensions.ReflectionCallMethod[T](Object obj, String methodName, Object[] args) in D:\a\1\s\Connectors\SpecFlow.VisualStudio.SpecFlowConnector\ReflectionExtensions.cs:line 8at SpecFlow.VisualStudio.SpecFlowConnector.Generation.BaseGenerator.Generate(String projectFolder, String configFilePath, String targetExtension, String featureFilePath, String targetNamespace, String projectDefaultNamespace, Boolean saveResultToFile) in D:\a\1\s\Connectors\SpecFlow.VisualStudio.SpecFlowConnector.V1\Generation\BaseGenerator.cs:line 14at SpecFlow.VisualStudio.SpecFlowConnector.Generation.GenerationProcessor.Process() in D:\a\1\s\Connectors\SpecFlow.VisualStudio.SpecFlowConnector.V1\Generation\GenerationProcessor.cs:line 41at SpecFlow.VisualStudio.SpecFlowConnector.ConsoleRunner.EntryPoint(String[] args) in D:\a\1\s\Connectors\SpecFlow.VisualStudio.SpecFlowConnector\ConsoleRunner.cs:line 34

按顺序排摸检查

1. 包是否 Download 到 NuGet packages 文件夹

SpeFlow 会在 NuGet packages 文件夹中搜索 Plugins,相关的 reference 是 TechTalk.SpecFlow.dll,如果这个 DLL 没有从 NuGet Source Repo 上 Download 到 NuGet packages 文件夹,那么这个 Plugins 是不会被发现的。
NuGet packages 文件夹默认是 C:\Users\user name\ .nuget\packages

找到 Specflow 包对应的版本号

在这里插入图片描述

2. 查看中间缓存包

中间缓存包是从 NuGet Packages 文件夹加载来的。一旦加载了就不会每次再从 NuGet Packages 文件夹中获取,所以这个文件夹中有可能是加载了老的 DLL,所以删除这个中间缓存文件夹对应的包。

中间缓存包文件夹是 C:\Users\user name\AppData\Roaming\NuGet\Ref\packages\SpecFlow.3.9.74\lib\net461

在这里插入图片描述

3. 项目 \bin\Debug 是否存在 DLL

\bin\Debug 文件的 DLL 是从中间缓存包文件夹中加载的,
查看项目 \bin\Debug 文件夹是否已经存在 DLL, 如果存在有可能是老的 DLL,可以尝试关掉 VS,删除 \bin\Debug 文件夹,再次打开 Solution 进行编译即可。

在这里插入图片描述

快速解决方案

因为历史原因,常年累月,本地的 NuGet Packages 可能下载过很多包,同一个包的不同版本,同一版本的不同 .NET Framework 的包,比较混乱,可以全部清理一下。

这里分享一个血一般的教训,一定要注意包对应的版本,尤其是 .NET Framework 的版本。比如之前有下载过 Specflow 2.4,是对应 net45 版本,而后面需要下载一个 net461 版本,一直不成功,就是因为存在了 Specflow 2.4 net45 版本 。这里订正一下,SpecFlow 2.4 是就是对应 NET45 版本的,之所以装 SpecFlow 2 版本会碰到这种问题,是因为前面装了 SpecFlow 3 的各种版本,后面再装 SpecFlow 2 就会有问题,执行下面步骤就能解决。

依次按下面三个步骤:

1. 清空依赖包文件夹

将下面涉及到的 NuGet Packages 文件夹,中间缓存包文件夹,项目 bin\Debug 文件夹分别清空。

C:\Users\user name\ .nuget\packages
C:\Users\user name\AppData\Roaming\NuGet\Ref\packages
C:\Work\SpecFlowDemo\SpecFlowSpecRun\bin\Debug

2. Restore NuGet Packages

右键 Solution -> Restore NuGet Packages
Solution 各个项目中的 packages.config 配置的依赖包会从 NuGet Source Repo 上重新下载到本地 NuGet Packages 文件夹中
在这里插入图片描述

3. 重新 Build Solution

中间缓存包文件中会从 NuGet Packages 文件夹中获取包,bin\Debug 再从中间缓存包文件加载 Dll,问题应该能得到解决。

这篇关于BDD - SpecFlow Troubleshooting:Unable to find plugin in the plugin search path: SpecRun的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/194747

相关文章

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

Unable to instantiate Action, goodsTypeAction, defined for 'goodsType_findAdvanced' in namespace '/

报错: Unable to instantiate Action, goodsTypeAction,  defined for 'goodsType_findAdvanced' in namespace '/'goodsTypeAction......... Caused by: java.lang.ClassNotFoundException: goodsTypeAction.......

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.B

一个bug日志 FATAL EXCEPTION: main03-25 14:24:07.724: E/AndroidRuntime(4135): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.syyx.jingubang.ky/com.anguotech.android.activity.Init

插件maven-search:Maven导入依赖时,使用插件maven-search拷贝需要的依赖的GAV

然后粘贴: <dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.26</version> </dependency>

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

【NodeJS】Error: Cannot find module 'ms'

转载自:http://blog.csdn.net/echo_ae/article/details/75097004 问题: Error: Cannot find module 'ms'at Function.Module._resolveFilename (module.js:469:15)at Function.Module._load (module.js:417:25)at Module

leetCode#448. Find All Numbers Disappeared in an Array

Description Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this

访问controller404:The origin server did not find a current representation for the target resource

ider build->rebuild project。Rebuild:对选定的目标(Project),进行强制性编译,不管目标是否是被修改过。由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。 参考:资料