我开始使用Visual Studio 2010.在完成C#程序后,我看到项目根目录中有.sln
和.suo
个文件,并且{{1子目录中的文件。这些文件是为了什么?
我需要识别要放入Git存储库的文件。连同我创建的源代码/文档,我猜这三个文件是我唯一需要处理的文件。但是,我不确定我是否正在跟踪正确的文件。
个人宏文件怎么样?我有Emacs key switch macro,.csproj
文件或.sln
文件是否有此宏?
答案 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,除非你知道你改变了什么,否则我不提交更改。