如何使 Specflow 使用来自外部程序集的绑定

How can I make Specflow use bindings from external assemblies

我有一个使用绑定属性的项目。我决定打包这些绑定中使用的一些逻辑,以便可以在多个项目中共享。

打包 NuGet 包并引用它后,似乎根本没有从包中触发绑定。将鼠标悬停在 [Binding] 关键字上时,没有引用名称空间并且文本为白色。

是否可以在 NuGet 包中识别 BindingAttribute

鉴于您已标记 specflow,我认为这个问题确实是 "How can I make Specflow use bindings from external assemblies"。对该问题的快速 google 搜索发现 this page on the Specflow wiki.

页面重要部分:

In order to use bindings from an external binding assembly, you have to list it (with the assembly name) in the app.config of the SpecFlow project. The SpecFlow project is always included implicitly. See more details on the configuration in the <stepAssemblies> section of the configuration guide.

<specFlow>
  <stepAssemblies>
    <stepAssembly assembly="MySharedBindings" />
  </stepAssemblies>
</specFlow>

除此之外,NuGet 并没有做任何特别的事情,它只是一种传递机制。编译器运行时,它不知道每个程序集是来自项目还是包引用。在运行时它是无关紧要的。

像 MVC 或 Specflow 这样的库通常只从调用程序集中发现 类,而不是所有程序集,因此您通常必须阅读所用框架的文档以了解如何注册额外的程序集。没有单一或通用的方法,每个库或框架都有自己的技术。