【问题标题】:Download prior version of Specflow .vsix下载 Specflow .vsix 的早期版本
【发布时间】:2017-10-08 12:19:32
【问题描述】:

我们的团队支持使用最新版本 Specflow 的用户以及未使用 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由于 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 的分支之间跳转时如何使用最新的扩展。再次感谢!

【问题讨论】:

    标签: visual-studio-2017 specflow vsix


    【解决方案1】:

    Visual Studio 扩展支持从 1.9 到 2.2 的所有 SpecFlow 版本。

    如果遇到问题,请在 GitHub 上开一个 issue,我们一起找原因。

    更新:
    SpecFlow 没有直接引用 NUnit。不是 2.2 或之前的任何东西。有一个 NuGet 包 SpecFlow.NUnit,它对 NUnit 有包依赖关系,但这个包仅有助于为 NUnit 配置 SpecFlow。但是,当您手动进行配置(在 app.config 中将单元测试提供程序设置为 NUnit)时,您不需要这个。

    可能是,当您切换分支并且不重新启动 Visual Studio 时,我们仍然有对以前 SpecFlow 程序集的引用,因此创建了版本提示。


    完全披露:我是 SpecFlow 的维护者之一。

    【讨论】:

    • 谢谢安德烈亚斯 - 你会愿意阅读我刚刚添加的问题中的编辑吗?我可能解释得不够清楚。
    【解决方案2】:

    万一其他人为此苦苦挣扎,这里是对我有效的解决这个特定事件序列的方法

    1) 你有一个使用 SpecFlow 2.1 的分支

    2) 你升级到最新的 VS SpecFlowExtension

    3) 你切换到另一个使用 SpecFlow 2.2 的分支并成功生成了 feature.cs

    4) 你收到来自需要 2.1 支持的用户的请求,切换到该分支,对功能文件进行更改,然后被 SpecFlow 2.2 not found 抨击

    5) 即使在关闭所有 VS 实例、删除 LocalAppData/Temp/VisualStudioTestExplorerExtensions、启动 VS 并打开使用 SpecFlow 2.1 驱动程序的解决方案之后,尝试保存仍然会导致 SpecFlow 2.2 未找到,即使使用绑定重定向到 2.1

    显然某些东西被缓存到磁盘(重新启动没有帮助),这不是立即显而易见的。解决方案是拥有单独的克隆——一个用于引用 SpecFlow 2.1 的分支,一个完全独立的克隆用于引用 SpecFlow 2.2 的分支。

    现在我不再遇到 SpecFlow Generator 错误 - 诀窍不是使用单独的分支,而是使用单独的克隆。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-12
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多