我们的团队支持使用最新版本Specflow的用户以及未使用的用户的自动化工作。因此需要在VS2017上的Specflow的当前.vsix以及期望Specflow 2.1的.vsix之间反弹(现在我被卡住了因为任何feature.cs再生失败而且找不到2.2)。我确实试图从https://github.com/techtalk/SpecFlow.VisualStudio/tree/release/v2017.1拉出来,但我得到了几个未解决的对Microsoft.VisualStudio的引用。
只需简单地拉出适用于SpecFlow 2.1的.vsix?
编辑:感谢Andreas,非常感谢快速反应。如果您愿意,我会继续在GitHub上打开一个问题,但我并不意味着暗示扩展存在问题。这可能是我的一个误解 - 我虽然目前的Specflow VS Extension'期望' SpecFlow 2.2。
如您所知,SpecFlow 2.2使用NUnit 3.x,而SpecFlow 2.1使用NUnit 2.x,这对于使用NUnit 2.x的过时功能的解决方案来说实质上是一个重大变化。
因此,当我从使用SpecFlow 2.2的分支切换到另一个使用2.1的分支(甚至尝试清除AppData / Local / Temp)时,SpecFlowGenerator将会失败,因为它正在寻找SpecFlow 2.2,我们不会这样做#&# 39;由于NUnit问题,我想在预转换分支中使用。
我希望不必更换扩展名,只要我可以继续在使用SpecFlow 2.1和使用2.2的分支之间切换分支。该项目的app.config确实包含绑定重定向 -
<dependentAssembly>
<assemblyIdentity name="TechTalk.SpecFlow" publicKeyToken="0778194805d6db41" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.2.1.0" newVersion="2.1.0.0" />
</dependentAssembly>
所以问题是即使在使用2.1和2.2的分支之间弹跳时如何使用最新的扩展。再次感谢!
答案 0 :(得分:0)
Visual Studio扩展支持从1.9到2.2的所有版本的SpecFlow。
如果您遇到问题,请在GitHub上打开一个问题,以便我们可以一起找到原因。
更新:
SpecFlow没有直接引用NUnit。不是2.2或之前的任何东西。有一个NuGet包SpecFlow.NUnit,它与NUnit有一个包依赖,但是这个包只能为NUnit配置SpecFlow。但是,当您手动进行配置时(在app.config中将单元测试提供程序设置为NUnit),您不需要这样做。
可能是,当您切换分支并且之间不重新启动Visual Studio时,我们仍然引用了之前的SpecFlow程序集,因此创建了一个Version hickup。
完全披露:我是SpecFlow的维护者之一。
答案 1 :(得分:0)
如果有其他人在努力解决这个问题,那么这个特定事件序列对我有用的解决方法
1)你有一个使用SpecFlow 2.1的分支
2)升级到最新的VS SpecFlowExtension
3)切换到另一个使用SpecFlow 2.2的分支并成功生成feature.cs
4)您收到来自需要2.1支持的用户的请求,切换到该分支,更改功能文件,并获得未找到SpecFlow 2.2的攻击
5)即使关闭VS的所有实例,删除LocalAppData / Temp / VisualStudioTestExplorerExtensions,启动VS并打开使用SpecFlow 2.1驱动程序的解决方案,然后尝试保存仍然导致未找到SpecFlow 2.2,即使使用绑定重定向到2.1
显然有些东西被缓存到磁盘上(重新启动没有帮助),这一点并不是很明显。解决方案是使用单独的克隆 - 一个用于引用SpecFlow 2.1的分支,另一个用于引用SpecFlow 2.2的分支的完全独立的克隆。
现在我不再遇到SpecFlow Generator错误 - 诀窍不是使用单独的分支,而是使用单独的克隆。