我该在哪里找到关于 .vcproj 文件结构的参考资料?

5

我在MSDN上查找了,但未找到结果。
我发现了一个vcproj文件的XML Schema,这很好。
但我真正想要的是vcproj文件中每个元素的解释和参考。

我面临的直接问题是,在VisualStudioProject/Files/Filter元素中,UniqueIdentifier属性的意义是什么?源文件的UUID在项目间是相同的吗?还是全局唯一的?

<VisualStudioProject>
  ...
  <Files>
      <Filter
        Name="Source Files"
        Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
        UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
        >
        <File ... />
          ... 
      </Filter>
      <Filter
        Name="Header Files"
        Filter="h;hpp;hxx;hm;inl;inc;xsd"
        UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
        >
        <File ... />
          ... 
      </Filter>
      <Filter
        Name="Resource Files"
        Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
        UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
        >
        <File ... />
          ... 
      </Filter>
  </Files>
  <Globals>
  </Globals>
</VisualStudioProject>

但是当我回答了那个问题后,我肯定会有更多的问题。所以我想要一个参考资料,允许我直接编辑.vcproj文件。

有人能建议一下吗?

编辑:即使微软没有记录,每个元素都有意义。有人知道列表或摘要吗?


如果你阅读他们团队博客,你会发现指向这些变化的指针,这将在Visual Studio 2010中得到改善。如果你在这里没有得到答案,我建议你在微软论坛上提问。 - Rick
4个回答

2
我怀疑微软没有打算将这种格式公开文档化。微软曾经表示,有些情况下,编写公开文档化的特性和格式需要更多的工作量。
如果这种格式没有被文档化,那是因为微软想要这样。任何文档都必须通过分析和反向工程来完成。

我可以相信微软没有记录这个格式。但它是XML,可读性很高。是否有人在任何地方进行过分析和逆向工程? - Cheeso
XML节点名称几乎对应于项目的配置管理器/属性页面中的选项。不难猜出来。 - i_am_jorf

2
我不知道你需要这个信息的原因,所以这可能与此相关或不相关,但是Visual Studio 2010将放弃 .vcproj 格式。他们正在切换到基于MSBuild的 .vcxproj 格式(因此也将完全记录)。因此,在长期运行中,使用 .vcxproj 可能更容易一些。
至于 GUID,我认为每个 GUID 都必须是唯一的。我不认为它们之间有任何关系(两个元素不应具有相同的 GUID)。
Microsoft 喜欢给每个东西都分配一个GUID。你永远不知道什么时候会需要它!;)

我知道项目文件会更改,但是我没有购买VS2010的预算。进一步查看后,“源文件”(集合)有一个GUID,“标题文件”有一个GUID,“资源文件”也有一个GUID,并且这些似乎在项目之间都是相同的GUID。 - Cheeso

1

所有的元素在.vcproj文件中都有记录,可以说是有点文档化了。也就是说,VS自动化接口的DevStudio文档描述了项目对象/属性,而项目对象/属性直接映射到XML元素/属性。


0

我记得有一个关于非常旧版本的CMake的问题,与UniqueIdentifier有关,它们并不是真正唯一的。如果我没记错的话,这个问题已经修复了,uniqueIdentifier应该是一个GUID。

很抱歉我不能提供更多帮助。我转向使用cmake,现在不需要再处理vcproj文件了,它们会自动生成。

你可以在CMake网站上找到更多信息,因为他们有一个用于vc项目文件的生成器,他们可能已经完成了所有的逆向工程。


此外,QT还有一个生成器(qmake),可以从由QT定义的.pro文件生成vc项目文件。 - metdos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接