7

在我们的团队中,我们在 Visual Studio 2008 中有一个数据库项目,该项目由 Team Foundation Server 进行源代码控制。每两周左右,在一位同事签入后,项目文件将不会加载到其他开发人员的机器上。错误信息是:

无法加载项目文件。根级别的数据无效。第 1 行,位置 1。

当我在 Notepad++ 中查看项目文件时,文件如下所示:

��<NUL?NULxNULmNULlNUL NULvNULeNULrNULsNULiNULoNULnNUL...

依此类推(您可以<?xml version在此看到),而普通项目文件如下所示:

<?xml version="1.0" encoding="utf-16"?> ...

所以文件的编码可能有问题。这对我们来说是个问题,因为事实证明不可能再次正确编码文件。“解决方案”是丢弃项目文件并从源代码管理中获取最后知道的工作版本。

根据文件,编码应该是UTF-16。根据 Notepad++,损坏的文件实际上是 UTF-8。

我的问题是:

  • 为什么 Visual Studio 会搞乱项目文件的编码,显然是在随机时间和随机机器上?
  • 我们应该怎么做才能防止这种情况发生?
  • 当它发生时,是否有可能以正确的编码恢复当前文件,而不是从源代码管理中提取旧版本?

最后一点:问题出在一个项目文件上,所有其他项目文件都不会暴露这个问题。

更新:感谢 Jon Skeet 的建议,我有了第三个问题的答案。当我用两个字节 FF FE 替换前九个字节 EF BB BF EF BF BD EF BF BD 时,项目文件将再次加载。

这仍然是 Visual Studio 损坏文件的问题。

4

1 回答 1

4
于 2010-03-24T04:44:41.273 回答