【问题标题】:Namespace of Regex won't work正则表达式的命名空间不起作用
【发布时间】:2012-11-11 06:14:57
【问题描述】:

我正在翻新一些用于 .NET Framework 3.5 的旧代码,使其能够使用 C# 在 .NET Framework 4 上运行。

以下正则表达式过去在 3.5 版中可以正常工作,但由于某些奇怪的原因不再工作。

public static readonly Regex ChatColorRegex = new Regex("\\|c[A-Za-z0-9]{6,8}"),
                                 ChatLinkRegex = new Regex("\\|H.*?\\|h");

我在文件顶部添加了“使用 System.Text.RegularExpressions”,但出现以下错误:“命名空间 System.Text 中不存在类型或命名空间 RegularExpressions。

我已经在 Google 上搜索过,并了解到您必须在 Visual Studio 中添加对 System.Text.RegularExpressions 的引用。但是,当我这样做时,我在可以添加的参考列表中找不到 System.Text.RegularExpressions。

我正在使用 Visual Studio 2012。

谁能告诉我我做错了什么,或者忘记阅读了吗?

【问题讨论】:

  • 你的目标是什么框架版本?
  • 我的目标是项目属性中的 .NET Framework 4。它是 4.5,将其更改为 4 并没有改变任何东西(即使在关闭/重新打开解决方案之后)。
  • 您甚至可以手动输入 System.Text.RegularExpressions 吗?
  • 没有名为 System.Text.RegularExpressions 的程序集,您无法添加对它的引用。正如答案中所指出的,Regex 类位于 .NET 4 的 System 程序集中。
  • @Blam:我不是在和你说话,因为我不明白你对“手动输入”某些东西的评论。但是,我想确保阅读此问题的任何人都不会去寻找不存在的程序集。

标签: c# .net


【解决方案1】:

Regex 类仍在 System.Text.RegularExpression 命名空间中。该类位于 System 程序集中。

如果您在解决方案资源管理器中检查项目引用,您应该会看到对系统程序集的引用。检查该引用的属性以查看系统程序集引用使用的 .NET Framework 版本。它应该与您在项目属性(应用程序选项卡)中为“目标框架”选择的 .NET Framework 版本匹配。

编辑:Regex 类位于 System.Text.RegularExpressions 命名空间中,而不是 System.Text。

【讨论】:

  • 不,Regex 位于 System.Text.RegularExpressions 命名空间中,而不是 `System.Text。当然,关于装配部分,您是对的。
猜你喜欢
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多