【发布时间】:2018-08-04 17:21:03
【问题描述】:
我们遇到了这里描述的问题:field-not-found-exception-with-net-4-4-5-compiled-regexes
简而言之:我尝试在已更新至 .Net 4.5 的机器上构建 .Net 4.0 程序集。所以我的目标是.Net 4.0。尝试在仅安装了 .Net 4.0 的机器上运行此程序集时,出现以下异常:未找到字段:'System.Text.RegularExpressions.Regex.internalMatchTimeout'。
如果我在更新到 .Net 4.5 的机器上构建相同的程序集,我可以在 .Net 4.0 机器上运行生成的程序集而不会出现任何问题。换句话说:在 .Net 4.5 机器上生成的 .Net 4.0 程序集不与在 .Net 4.0 机器上生成的程序集相同。
程序集提供预编译的正则表达式。
我可以通过以下方式解决这个问题:
- 在 .Net 4.0 系统上构建 de 汇编。
- 将目标机器升级到 .Net 4.5。
然而,这两种解决方案都存在问题:
- 我们为各种目标构建程序集,包括 WinRT。我们现在面临的问题是,我们无法使用一台机器来构建所有这些,这使我们的构建/测试过程变得复杂。
- 生产的组件被运送给客户。如果我们告诉他们升级到 .Net 4.5 以使用 4.0 程序集,他们将不会都感到高兴。
除了摆脱预编译的正则表达式之外,你们有没有人知道更好的解决方案?
【问题讨论】:
-
你真的需要
regex!您可以改为使用字符串方法也很有效。但这实际上取决于您尝试匹配的输入..给我们一些有关您输入的信息以及您用来匹配的regex。 -
好吧,我猜我们总能避免使用正则表达式。感谢您的提议,但如果我们真的需要,我们知道该怎么做。但是:这是现有代码,到处都是正则表达式。因此,如果不需要重写代码,我们希望避免这种情况。特别是因为这个问题基本上不是我们的错,而是微软无法保持正常运行的结果。