在新的 ASP.NET 5 类库(包)中将正则表达式与 XUnit 结合使用

本文关键字:正则表达式 XUnit 结合 ASP NET 类库 | 更新日期: 2023-09-27 18:32:09

我在一个新的 ASP.NET 5 类库中使用 XUnit 并尝试使用 Assert.Matchs,但不断从智能感知收到以下错误:
The type 'Regex' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Text.RegularExpressions.... '

我目前只针对 dnx451 框架。知道为什么我会收到此错误吗?我尝试在project.json中添加System.Text.RegularExpressions作为依赖项,然后删除了我的所有代码错误。

在新的 ASP.NET 5 类库(包)中将正则表达式与 XUnit 结合使用

最大的问题是:这真的是一个问题还是一个烦恼?我问这个问题是因为我不相信这是一个真正的问题,但让我解释一下正在发生的事情以及您可以采取哪些措施来进行故障排除。

一、来自智能感知的建议

The type 'Regex' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Text.RegularExpressions....'

这是由于没有针对 XUnit 的智能感知。如果我在这里,这不是一个真正的问题,而是一个刺激点。Visual Studio Intellisense看到Regex对象,识别System.Text.RegularExpressions中有一个对象,并要求您引用它。然后,当你编译时,它会尝试使用来自System.Text.RegularExpresssions的对象,而不是XUnit。它爆炸了,很可能是由于没有具有正确签名的方法,这应该不足为奇。

删除对 SYstem.Text 的引用。还炸吗?它工作正常吗?介于两者之间的东西。

故障 排除:

首先,确保引用了正确的 XUnit 库,该库包含其正则表达式对象(而不是 System.Text.RegularExpressions 正则表达式对象)。然后确保在顶部有一个适当的 using 语句来使用它(或完全限定)。

接下来,如果智能感知仍然启动并惹恼您,请考虑XUnit.Contrib。不确定它是否是最新的,因为我有一段时间没有碰过 XUnit,但它确实有 Resharper 位:https://github.com/xunit/resharper-xunit

如果这是一个死胡同,看看任何地方是否有XUnit Intellisense。如果没有,您可以创建自己的自定义智能感知:http://www.wyndhamhudson.com/adding-custom-intellisense-to-visual-studio-2010/