12

Microsoft Visual Studio 使用 XML 来保存其.vcproj项目文件。所以区分 XML 项目文件应该很容易。

不幸的是,如果您更改任何项目文件的属性,Visual Studio 坚持随机打乱项目文件的 XML 节点!这使得项目文件更改的文本差异和合并基本上是不可能的。更改一个编译器设置会使我的视觉差异工具认为我已经更改了文件中 50% 的行!我什至尝试过一些 XML 差异工具,但它们只是显示了对相同混乱的更结构化的视图。

有人对.vcproj在源代码管理中维护文件有任何建议吗?或者说服 Visual Studio不要重新排列文件中的 XML 节点的.vcproj方法?

(我还研究过使用 CMake 之类的工具.vcproj从对差异更友好的文本文件生成文件,但 CMake 有其自身的问题。)

4

6 回答 6

5

这似乎时不时出现。

对于插件或其他规范化工具来说,这可能是一个成熟的问题。

在 MS 决定修复它之前,这将是一个很好的副业。那么你就不走运了——除非他们当然愿意购买你的 IP。

有人想开始一个开源项目或商业产品吗?我是游戏。

我可能会尝试一个独立的规范化工具,然后看看我是否可以把它变成一个插件。

于 2009-03-04T19:16:27.947 回答
4

我们现在在这里看到这种情况,项目文件的配置在几个人的计算机上重新排序,这非常令人沮丧......

*注意:我们都使用 VS 2008 Pro,而不是 Team

起初看起来它们是随机重新排序的,但实际上有一个模式,它根本不是随机的。

对于一组,配置按平台排序,然后按配置:

  • 调试|Win32
  • 调试|x64
  • 发布|Win32
  • 发布|x64
  • 调试 DX11|Win32
  • 调试 DX11|x64
  • 发布 DX11|Win32
  • 发布 DX11|x64
  • ...

对于另一组,配置按 Config 排序,然后按 Platform:

  • 调试|Win32
  • 发布|Win32
  • 调试 DX11|Win32
  • 发布 DX11|Win32
  • 调试|x64
  • 发布|x64
  • 调试 DX11|x64
  • 发布 DX11|x64
  • ...

纵观 perforce 的历史,这与同一组人提交的多个项目是一致的,并且大约有 50/50 的比例,所以这不仅仅发生在一个人身上。

这是你们都看到的同一个问题吗?如果是这样,我希望这种模式有助于找到不涉及宏/额外差异步骤的解决方案......

它必须是某个地方的设置,或者是点击某物的副作用,因为每台机器都是 100% 可重现的。即使您为初始环境布局选择哪个选项(VC++、VB、通用开发等...)

于 2012-03-01T03:41:00.740 回答
2

我使用 WinMerge 作为我的差异工具,并启用了移动块检测。它并不能完全解决问题,但它使可视化差异更容易忍受。

于 2009-03-04T18:51:36.820 回答
0

您在哪个版本的 Visual Studio 中看到了这个?

我对 .vcproj 文件做了很多工作(我们在多个 Visual Studio 版本中为我们的库维护项目文件的版本,而且我总是在区分和合并这些东西),但我从未见过这种行为。

于 2009-03-04T23:07:03.820 回答
0

我在 Adob​​e 的团队在 vs2008 中也看到了同样的情况。只是一个基本的调试/发布,win32/win64 项目为您提供 4 种配置和随机洗牌。有几个人试图弄清楚 devstudio 重新排序的时间和原因,但目前的想法是排序键是关键字哈希 - 因此是半随机的。我们已经放弃了,在代码审查中只是总结了“真正的”变化。

于 2010-06-02T19:24:13.150 回答
0

我想我已经找到了这次洗牌的原因。至少在VS2008中。

如果您安装 x64 编译器,VS 会将项目排序为:

Debug|Win32
Debug|x64
Release|Win32
Release|x64

如果你不这样做,它会像这样订购它们:

Debug|Win32
Release|Win32
Debug|x64
Release|x64

因此,请确保您所有的同行都安装了相同的编译器集,这样它就不会洗牌。

对其进行了测试,这种行为似乎是可重现的。

于 2014-07-07T15:04:51.050 回答