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

pro*_*eek 58 git visual-studio

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

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

添加

个人宏文件怎么样?我有Emacs键开关宏,.sln文件或.csproj文件有这个宏吗?

SLa*_*aks 70

你应该提交.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*
Run Code Online (Sandbox Code Playgroud)

  • @Tim:我不同意 - 默认情况下,.user文件将注册完全限定的路径,这通常在开发人员之间无效.但是,您可以通过将.user文件中的相关行复制到.csproj文件来在.csproj文件中注册共享调试设置. (5认同)
  • 如果要共享调试/命令行args,则.user文件对于放入版本控制很有用 (4认同)
  • 我没有意识到那些是完整的道路.那是不幸的.MS肯定搞砸了.你的解决方案更好.赞成你的评论. (2认同)
  • 这个答案只是提供了“什么”,没有提供任何理解或“为什么”。 (2认同)

Nix*_*Nix 43

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

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

SUO(解决方案用户选项)是用户设置文件.完全一次性,你可以删除它,你将失去的最常见的事情是断点.


推送除SUO设置文件之外的所有内容.

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


小智 14

来自MSDN:

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

此外,还来自MSDN:

溶液用户选项(名为.suo)文件是一个结构化存储,或化合物,文件存储在二进制格式.您将用户信息保存到流中,流的名称是用于标识.suo文件中信息的密钥... [来源]

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