哪些Visual C ++文件类型应提交给版本控制?


170

哪些Visual Studio \ Visual C ++文件类型应提交给版本控制?
在我的项目中,我具有以下文件类型:

aps
cpp
exe
filters
h
ico
idb
ipch
lastbuildstate
lib
log
manifest
obj
pch
pdb
rc
rc2
res
sdf
sln
suo
tlog
txt
user
vcxproj

我将不胜感激每个简短的推理。如果其中任何一个有争议,请注意。为了完整起见,我特意包括了一些琐碎的文件类型。

编辑

一方面,我希望将来独立于平台。另一方面,在不久的将来,我想与具有类似设置的团队成员合作。设置之间的文件夹兼容性当然是一个选项,因此,如果简化了工作流程,则可以包括保存路径的配置文件。
再次,我肯定会感谢解释是什么。


23
哇,这个问题确实证明了VS坚持要在项目目录中创建的临时文件数量越来越多。
Nik Reiman

@Nik:它们不在项目目录中。
汉斯·帕桑

1
@Hans,它们在其中或项目子目录中
Nik Reiman 2010年

@Nik:不是msbuild goo。我认为您的意思是临时文件。我同意,这并不漂亮。
汉斯·帕桑

6
我邀请您试用Xilinx的ISE开发环境(用于HDL编程),并查看它散发出了多少个临时文件。数百个带有数百个扩展名的文件:)谈论一团糟。相比之下,Visual Studio非常干净。
Mark Lakata 2012年

Answers:


232

是:

  • cpp:源代码
  • 过滤器:项目文件
  • h:源代码
  • ico:资源
  • rc:资源脚本
  • rc2:资源脚本
  • sln:项目文件
  • txt:项目元素
  • vcxproj:项目文件

没有:

  • aps:上次资源编辑器状态
  • exe:生成结果
  • IDB:构建状态
  • ipch:构建助手
  • lastbuildstate:构建助手
  • lib:生成结果。可以成为第三方
  • 日志:构建日志
  • 清单:构建帮助器。可以自己写。
  • obj:构建助手
  • pch:构建帮助器
  • pdb:构建结果
  • RES:构建助手
  • sdf:智能感知数据库
  • suo:解决方案用户选项
  • tlog:构建日志
  • 用户:调试设置。 如果只有一个开发或自定义调试设置,请保留

其中一些比较不稳定,因为它们都可以自动生成并自己维护。并且还有更多没有出现在列表中的东西。首先要注意文件的位置。如果它在您的解决方案或项目目录中,那么您很可能希望将其检入。那么在Debug或Release子目录中的可能性就很小。Build + Clean删除了很多噪音文件。当然,还包括:签入,重命名项目目录,签出并确认它已生成。


这是非常有用的。我的项目也有一个.vcb(这个项目是从旧版本(EVC),因此可能与该转换。
罗比·马修斯

.vcxproj.filters文件呢?
John Alexiou

1
.OPENSDF亦不适用
Zam

1
filters自从答案的第一个修订版以来,@ ja72 一直在“是”列表中
带有翅膀的小行星

26

从您的列表中,我将选择那些:

cpp
filters
h
ico
manifest
rc
rc2
sln
txt
vcxproj

通常,您应该对构建项目所需的所有文件进行版本控制。自动生成的文件不应存档恕我直言。


@ milan1612谢谢您的简洁清单。与汉斯·帕桑特的回答相比,您说我应该在他不应该的地方提交清单文件。您能否详细说明该文件的含义,以及为什么认为我应该提交它,特别是在团队(和未来的跨平台)环境中?
乔纳森(Jonathan)2010年

3
清单可以有不同的用途。我已经手动创建了包含在资源文件中的文件,这些文件导致Windows将样式应用于我的窗口。此外,还有一些清单可以使您在可执行文件旁边部署标准库dll。考虑有关您的应用程序的元数据...
米兰2010年

@ milan1612-我遇到了其他类型-suo,是否也应该添加此类型?如果是这样,您是否可以将其添加到列表中以保持完整性?
乔纳森

3
@Jonathan Suo持有与解决方案有关的特定于开发人员的数据(例如,在解决方案资源管理器中打开了哪些文件或打开/折叠了哪些文件夹)。因此,它不应处于版本控制中。
丹尼尔·罗斯

1
@ milan1612-在丹尼尔·罗斯(Daniel Rose)输入之后,您可以从列表中删除该锁吗?
乔纳森

17

如Microsoft所建议,版本控制中应包含的文件类型:

.mak,.dsp,.c,.rc,.rc2,.ico,.bmp,.txt,.def,.hpj,.bat,.rtf,.odl,.inf,.reg,.cnt,.cpp ,.cxx,.h,.hpp,.hxx,.inl,.tpl,.vtp和.mst ...

不应包含的文件类型:

.pch,.mdp,.ncb,.clw,.obj,.exe,.aps,.cpl,.awk,.exp,.lib,.idb,.opt,.pdb,.map,.res,.ilk ,.scc,.bsc,.sbr,.dll和.tlb ...

但是如果在exe文件或外部库中使用外部工具,那么我认为它也应该包含在版本控制中

INFO:哪些Visual C ++文件添加到源代码控制

此外,此链接描述了Visual Studio 2017中Visual C ++项目文件类型


7

如果右键单击该项目,则上下文菜单中应有一个“向源代码管理添加解决方案”选项。

如果使用此选项,则仅添加那些必需的文件。所有中间文件和输出文件将被忽略。


4

其他答案很好。我只是认为我会提供一个有用的小工具。在GitHub上查看Visual Studio .gitignore模板。这是一个很好的,主动维护的文件列表,通常不包含在版本控制中。

同时,整个gitignore存储库对于从ActionScriptZend的各种开发都是非常有用的资源。如果您不使用Git,仍然可以使用gitignore文件作为参考。


1

通常,您应该将出现在解决方案资源管理器中的所有文件添加到版本控制中。此外,您需要包括.sln(解决方案文件)和.vcproj / .vcxproj / .vbproj / .csproj文件(项目文件)。

请注意,如果您具有Visual Studio的源代码控制插件,例如TFS或AnkhSvn,则无需显式关心这一点。Visual Studio知道哪些文件需要在版本控制中,并将数据提供给源代码控制插件。仅当您使用外部工具(例如TortoiseSVN)时,才需要具有此类列表。


0

建立目标只需要一次。我认为这只是.cpp .h .ico .rc .txt .manifest .rc2

我不知道什么是sdf,aps,过滤器,用户,在我的C ++版本中还没有看到它们。

只需查看它们是否包含程序员编写的代码或它们是否由VS生成即可。


4
确保需要.sln和.vcxproj-它们描述了项目和解决方案。
Sharptooth

是的,如果您不维护makefile。抱歉,我个人如此,所以我忘记了有人将Visual Studio作为开发工具的唯一工具。我只使用调试器。
Lothar

3
好吧,VS项目文件也是makefile-2010
米兰,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.