为什么有.sln,.suo和.csproj文件?

时间:2010-10-06 14:56:57

标签: visual-studio git

我开始使用Visual Studio 2010.在完成C#程序后,我看到项目根目录中有.sln.suo个文件,并且{{1子目录中的文件。这些文件是为了什么?

我需要识别要放入Git存储库的文件。连同我创建的源代码/文档,我猜这三个文件是我唯一需要处理的文件。但是,我不确定我是否正在跟踪正确的文件。

ADDED

个人宏文件怎么样?我有Emacs key switch macro.csproj文件或.sln文件是否有此宏?

4 个答案:

答案 0 :(得分:68)

您应该提交.sln.csproj,而不是.suo.user文件。

您可以将以下内容添加到.gitignore

#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.lib
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*

答案 1 :(得分:40)

SLN(解决方案)是解决方案文件。它存储有关构成您正在开发的项目的项目集合的信息。它们包含项目,源代码控制设置或任何其他全局级别的东西。

CSProj(项目文件)是实际的代码项目(C#Libraries,WCF Services等)。它在项目级别存储信息。它包含了所有相关的参考文献,Classess等。

SUO(解决方案用户选项)是用户设置文件。完全是一次性的,你可以删除它,最常见的东西是断点。


推送除SUO设置文件以外的所有内容。

不要包含任何bin,debug,obj目录。您应该包含的唯一DLL(或编译/生成的对象)是您的应用程序外部的那些。

答案 2 :(得分:13)

来自MSDN:

  

解决方案(.sln)是用于在Visual Studio中组织项目的结构。它执行类似于Visual Basic 6.0中的Windows程序组(.vbg)文件和Visual C ++ 6.0中的项目工作区(.dsw)文件的功能。该解决方案以.sln(基于文本,共享)和.suo(二进制,用户特定的解决方案选项)文件维护项目的状态信息...... [Source]

此外,也来自MSDN:

  

解决方案用户选项(.suo)文件是以二进制格式存储的结构化存储或复合文件。您将用户信息保存到流中,流的名称是用于标识.suo文件中信息的密钥... [Source]

您无需将.suo文件放在VCS中。这是一个特定于用户的文件。

答案 3 :(得分:3)

SUO文件确实有目的,我不同意应始终忽略它们的说法。我不会忽略它们,作为一般做法,我将它们添加到我们的SVN存储库中。我的项目并不总是使用启动项目或平台的解决方案默认值。我觉得很烦人,如果我抓住一个新项目,它不会默认为64位和适当的平台。 SUO包含正确设置这些默认值的设置。

这方面的缺点是它是一个二进制文件,所以每次打开解决方案并执行任何操作时文件都会发生变化。通常文件小于100k,除非你知道你改变了什么,否则我不提交更改。