2009-01-02 80 views
5

我正在使用VSS 2008和Visual Studio 2008.当我的源文件签入时,VSS属性对话框将它们显示为类型“Unicode(UTF-8 )”。但是,如果我从Visual Studio中检查一个,然后做一个比较,它说“二进制文件不同”。有没有人看到这个?我在某个地方搞了个设置吗?VSS和Visual Studio 2008源文件的“Binary Files Differ”消息

感谢, 安迪

更新: 感谢VonC的一些见解。在大多数情况下,关闭“自动检测本地文件的编码”复选框会对其进行修复,但对于至少一个文件而言,它并没有帮助。此外,我还没有找到办法做多个文件 - 他们必须每次都改变,一次一个。 我仍在寻找更全面的解决方案。

回答

9

从这个old (2004) but may be still relevant article

视觉源安全并不总是正确识别文本的文件类型。当使用'auto'类型检入文件时,它将它们视为二进制文件。

因此,当您比较两个.sql文件时,您可能会看到'binary files differ' - 仅此而已。 (这就是vss如何处理二进制文件)。

The binary file differ

的解决方案是使用特性的上下文菜单中源安全的文件来改变该文件类型。将类型更改为文本,您应该能够执行视觉比较。您也可以在签入文件时单击“高级”选项,然后手动将所选内容更改为“text”。

为了避免将来 - 您可以在visual source safe中的选项菜单下添加文件类型设置,以设置各种文件类型的默认行为。

5

您可以指定其他应用程序,而不是使用内置的VSS比较工具。这可以帮助您避免二元问题。举个例子,如果你碰巧使用超越比较(可悲的是,不是免费的,但它是一个我有方向):

  1. 进入工具菜单
  2. 进入选项菜单项
  3. 进入自定义编辑器选项卡
  4. 更改操作 “文件的差异” 选择
  5. 更改文件扩展名:*
  6. 更改命令行(包括引号): “C:\ Program Files文件\超越比较2 \ bc2.exe” %1%2
  7. ,单击Add按钮
  8. 单击OK按钮

我猜你可以换出上述与其他程序的命令行值,但还没有尝试过自己。

+0

太棒了! thx的帖子! – 2010-01-12 13:47:27

0

是的,其他答案是正确的。但是,如果文件被某人锁定,并且您需要执行代码合并,可以做些什么?一旦被禁用您不能更改属性:

Type is disabled as someone else checked out

要启用版类型下拉做这个简单的一招。

0)下载并运行WinSpy ++; 1)将指针拖放到禁用的下拉列表中;

2)将句柄改为'Enabled';

3)VSS将允许您保存任何变化。

WinSpy++ sequence

PS。 VSS已经过时,但仍被广泛用于懒惰地改变公司。