如何为所有 SpecFlow 功能重新生成设计器代码
Posted
技术标签:
【中文标题】如何为所有 SpecFlow 功能重新生成设计器代码【英文标题】:How to regenerate designer code for all SpecFlow features 【发布时间】:2014-11-16 12:02:31 【问题描述】:我有大约 30 个 SpecFlow 功能文件,最近我从源代码管理中删除了 Foo.feature.cs 文件,因为我厌倦了解决 Designer 生成代码中的合并冲突。
我没有从我的 Visual Studio 项目中排除或删除这些文件,所以 Visual Studio 仍然认为它们应该在那里,只是在硬盘上丢失了。
理想情况下,我只想单击根文件夹并重新生成文件背后的所有代码,但 VS 2010 和 SpecFlow 1.9 不存在这样的选项。我什至可以从命令行以编程方式重新生成它们、创建另一个自定义工具或添加预编译构建事件。
有没有一种方法可以为 SpecFlow 功能(*.feature.cs 文件)重新生成所有 Designer 生成的代码隐藏文件,而无需右键单击每个 .feature 文件并单击“运行自定义工具”?
【问题讨论】:
你也可以只保存 .Feature 文件,因为它会自动执行“运行自定义工具”。否则它将是模拟对 RunCustomTool 的调用的情况 我希望它不会单独对每个文件进行任何类型的操作。 您不能右键单击项目并选择“重新生成功能文件”?这个选项在 vs2010 中不可用吗? @SamHolder 哦,天哪。它就在我的面前。如果您将其发布为答案,我会标记它。谢谢! 没问题。现在回答了。以前不想,以防我得到“不在我的 Visual Studio 版本中”的反对票:) 【参考方案1】:它在命令提示符下运行得更快。转到您的 Specflow 包工具文件夹并运行以下命令行。它还确保将正确的 Specflow 版本添加到文件中。
specflow.exe generateall <My_Testing.csproj>
【讨论】:
非常好!很棒的命令行解决方案,如果您需要即时重新生成测试,并且不必将 .feature.cs 文件检查到源代码控制中,则对 CI 构建特别有用。 如果您不使用 Nuget,这将特别方便,因为 Specflow 会查找您的包文件夹,如果找不到,即使您使用的是 2.3+,也会生成 1.9 的功能文件(见这里groups.google.com/forum/#!topic/SpecFlow/f0rtrenUeOQ)【参考方案2】:您可以右键单击项目并选择“重新生成功能文件”以一次完成所有操作。
【讨论】:
感谢您的回答。如果我没有得到这个答案,我正准备做一些我以后会后悔的事情:) 奇怪,我想知道为什么当您右键单击单个功能文件时该菜单选项不可用。 @GrantBirchmeier:您可以从单个功能文件的上下文菜单中选择“运行自定义工具”。不是很直观,但你就是这样做的。以上是关于如何为所有 SpecFlow 功能重新生成设计器代码的主要内容,如果未能解决你的问题,请参考以下文章