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

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

我需要确定要放入Git存储库的文件。 连同我创build的源代码/文档,我想这三个文件是我唯一需要照顾的。 但是,我不确定是否跟踪正确的文件。

添加

个人macros文件如何? 我有Emacs键开关macros , .sln文件或.csproj文件有这个macros吗?

您应该提交.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* 

SLN(解决scheme)是解决scheme文件。 它存储关于组成你正在开发的任何项目的信息。 它们包含项目,源代码控制设置或任何其他全局级别的事物。

CSProj(项目文件)是实际的代码项目(C#库,WCF服务等)。 它存储项目级别的信息。 它包装所有相关的参考文献,Classess等。

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


除了SUO设置文件之外,推​​送一切。

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

来自MSDN:

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

此外,也从MSDN:

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

您不需要将.suo文件放入VCS中。 这是一个用户特定的文件。

SUO文件确实有一个目的,我不同意他们应该被忽略的陈述。 我不会忽视它们,作为一般的做法,我将它们添加到我们的SVN仓库。 我的项目并不总是使用Startup Project或平台的解决scheme默认值。 我觉得很烦人,如果我抓住一个新的项目,它不默认到64位和适当的平台。 SUO包含正确设置这些默认值的设置。

这是一个二进制文件,每当你打开解决scheme,做任何事情的文件将会改变。 通常情况下,文件less于10万,除非你知道你改变了一些东西,否则我不会改变。