C#应用程序崩溃,代码为CLR20r3 ...因为正则表达式?

时间:2017-08-08 13:16:23

标签: c# regex winforms assemblies

我面临一个非常奇怪的问题,即使经过数小时的研究,我也无法理解,这就是我分享这个问题的原因。

我创建了一个小型Windows窗体,它在我的计算机上运行完美,包括Debug版本和发行版本。一切都很好,直到我试图在应该真正使用它的计算机上启动它。我得到了着名的 CLR20r3 错误,所以我在互联网上搜索并看到了各种可能的原因:

  • 软件使用的引用可能不在运行该软件的计算机上,因此我将所有引用添加为本地副本。
  • 这可能是一个.NET问题,所以我卸载并重新安装它。
  • 可能是某些特定的CPU奇怪标准,所以我尝试仅为 x86 部署它。

但这些解决方案都没有奏效。经过数小时和数小时的试验,汇编和研究,我找到了原因:我的代码中有这个特定部分,它应该从日志字符串中删除任何多余的空格:

for(int i = 0; i < lastlogs.Length; i++)
{
    RegexOptions options = RegexOptions.None;
    Regex regex = new Regex("[ ]{2,}", options);
    lastlogs[i] = regex.Replace(lastlogs[i], " ");
}

如果我注释掉这部分,代码运行完美。我添加了对System.Text.RegularExpressions的引用,但我无法在程序集列表中看到它,所以我认为它是某种内置Windows程序集。但如果情况确实如此,软件崩溃是因为它无法找到它而感到奇怪...

我想了解为什么会发生这种崩溃,以及是否有人有办法解决这个问题。

0 个答案:

没有答案