2

快速序言

在您将其标记为此问题的副本之前,我正在尝试这个解决方案,但我仍然遇到问题。

问题

我正在尝试使用 Beyond Compare v3.3 比较 ASP.Net 网站的两个文件夹之间的文件。一个文件夹定义了所有 .ascx.cs 文件,另一个文件夹从 dll 继承代码。

所以在左边,.ascx 文件有

<%@ Control Language="c#" Inherits="MyControl" CodeFile="MyControl.ascx.cs" %>

在右边,他们有

<%@ Control Language="c#" Inherits="MyControl, MyAssembly" %>

如果这些是文件中唯一的差异,我希望通过忽略不重要的差异功能将它们视为相等。

一个快速的谷歌搜索出现了这个 StackOverflow 问题这个支持页面,它们说的基本相同。

我已按照他们的指示进行操作,但仍然无法正常工作。

这是我所做的:

  1. 开始了一个新的文件夹比较会话。
  2. 打开一个 .ascx 文件。
  3. 单击“规则”按钮以打开“会话设置”对话框。
  4. 在重要性选项卡上,单击编辑语法按钮。
  5. 单击“新建...”按钮。
  6. 将“元素名称”设置为“代码文件”,将“文本匹配”设置为

    (Inherits|CodeFile)\s*=\s*(["'])[^'"]+\2

    选中“正则表达式”复选框,取消选中“此元素区分大小写”复选框,然后单击“确定”按钮。

    新语法项目对话框

  7. 单击确定按钮。
  8. (现在回到重要性选项卡上)取消选中新制作的“代码文件”复选框。
  9. 在下拉列表中,选择“更新会话默认值”,然后单击确定。 会话设置对话框

只是为了仔细检查我的正则表达式是否正确,我使用正则表达式对两个 .ascx 文件运行了 ctrl+F。它正确地找到了所有三个实例(左侧文件中的Inherits= " ..." 和右侧的Inherits="..."CodeFile="...")。

即使在文件比较(与文件夹比较相反)上,也不会将差异标记为不重要。这些特定的行在大小写上有所不同,它正确地将那些标记为不重要,但CodeFileInherits仍然在抱怨。

我认为可能是因为一方有两个不同,而另一方有一个,所以我在一个文件上添加了注释,据我了解,该文件与我的新文件具有完全相同的规则类型。BC3 也正确地忽略了评论。

比较失败

有任何想法吗?

4

1 回答 1

0

我在忽略 SQL 文件的 sp_updateextendedproperty 或 sp_addextendedproperty 行时遇到问题。我发现的灵魂是确保正则表达式实际上匹配整行,而不仅仅是它的一部分。最初我使用的是:EXEC sp_(update|add)extendedproperty

为了解决匹配问题,我将其更改为:.*EXEC sp_(update|add)extendedproperty.*

这包括任何前置或附加的字符

于 2017-08-07T02:29:32.613 回答