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

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

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

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

有帮助吗?

解决方案

这似乎时不时就会出现。

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

在微软决定修复它之前,这将是一个很好的副业。那么你就不走运了——除非他们提出购买你的知识产权。

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

我可能会尝试使用独立的规范化工具,然后看看是否可以将其变成插件。

其他提示

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

*笔记: 我们都用VS 2008 Pro,而不是Team

乍一看似乎它们是随机重新排序的,但实际上有一个 图案 而且它根本不是随机的。

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

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

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

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

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

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

它必须是某个地方的设置,或者是单击某些东西的副作用,因为它在每台机器上都是 100% 可重现的。即使它是一些愚蠢的事情,比如您为初始环境布局选择哪个选项(VC++、VB、一般开发等...)

我使用WinMerge作为我的差异工具,并启用了移动的块检测。它并没有完全解决问题,但它使差异可视化更加可以承受。

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

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

我在Adobe的团队在vs2008中看到了同样的事情。只是一个基本的调试/发布,win32 / win64项目为您提供4种配置和随机改组。有几个人试图找出devstudio重新排序的时间和原因,但目前认为排序的关键是关键字哈希 - 因此是半随机的。我们放弃并在代码审查中总结了“真实”的内容。变化。

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

如果安装x64编译器,VS会将项目命令为:

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

如果你不这样做,它会点赞它们:

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

因此,请确保所有对等方都安装了相同的编译器集,因此不会随机播放。

测试它,此行为似乎是可重现的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top