Visual studio 2010 Visual Studio 2010 C#解决方案中的哪些文件/文件夹应放入Mercurial DVCS?

Visual studio 2010 Visual Studio 2010 C#解决方案中的哪些文件/文件夹应放入Mercurial DVCS?,visual-studio-2010,mercurial,Visual Studio 2010,Mercurial,我正在使用谷歌代码来主持我的C#项目。它有一个包含一个类库和一个测试项目的解决方案。我正在使用VisualStudio2010 我使用的客户是陆龟 在Windows资源管理器中,首先我克隆了一个空文件夹,并在其中获取了.hg文件,以便它与宿主代码相关联。现在,我创建了一个新的C#项目,并将所有文件复制到我的根源代码控制文件夹中。我以后再做 提交时,我的解决方案文件夹中有很多文件和文件夹,但并非所有文件和文件夹都是代码。通常我只是构建并取出EXE或DLL,从来没有真正为其他东西烦恼过。现在我觉得并

我正在使用谷歌代码来主持我的C#项目。它有一个包含一个类库和一个测试项目的解决方案。我正在使用VisualStudio2010

我使用的客户是陆龟

在Windows资源管理器中,首先我克隆了一个空文件夹,并在其中获取了.hg文件,以便它与宿主代码相关联。现在,我创建了一个新的C#项目,并将所有文件复制到我的根源代码控制文件夹中。我以后再做

提交时,我的解决方案文件夹中有很多文件和文件夹,但并非所有文件和文件夹都是代码。通常我只是构建并取出EXE或DLL,从来没有真正为其他东西烦恼过。现在我觉得并不是所有的文件和文件夹都对源代码控制很重要

我对源代码管理真的很陌生


除了实际的代码文件本身,哪些文件/文件夹应该进行源代码管理?

好问题!我使用的经验法则如下:

  • 签入文件夹中的所有文件以获得完整的树
  • 稍微处理一下这个问题,并注意到挂起的签入
  • 挂起但您尚未接触的文件是Visual Studio文件,在您工作以保留项目设置时会更新这些文件
  • 现在要小心:
    *.sln
    *.csproj
    和其他项目文件也将更改,必须签入这些文件
  • 其他文件,特别是那些“看起来”二进制文件(例如在
    obj
    dir和
    *.suo
    文件中)可以标记为排除列表
  • 您可以决定包含DLL或EXE的生成版本,但这不是必需的,因为任何加载您的项目的人都可以生成它。现在,下一步是:

    • 在您工作了一点并认为已经创建了一个稳定的文件列表之后,将整个项目放到另一个位置并立即编译。它有用吗?它会丢失文件吗
    如果这最后一步有效(您应该定期检查),那么您的文件就有了坚实的基础

    注意:有些工具从内部支持Visual Studio,并且知道哪些文件应该包括或不应该包括,例如,对于SVN,我知道VisualSVN在跳过不需要的文件方面做得相当好


    还有两条拇指法则(哦,实际上是三条):

    • 在你排除的东西上要具体,在你包含的东西上要自由:包含太多总比包含太少好
    • 一些可以安全排除的扩展名:
      *.user
      (任何项目的根)、
      \obj\**/code>(都在临时的
      obj
      -文件夹下)、
      *.vspscc
      *.vssscc
      (项目的根)、
      *.suo
      ,并且根据您的偏好:
      \bin\**/code>
      
    • 哦,对于网站项目,它们可能包含一个
      预编译web
      目录或将其添加到您的解决方案中,而您确实不想签入该目录:此处排除所有

    编辑:Visual Studio中要忽略的文件。

    要更简洁地给出@Abel的答案,可以省略bin和obj文件夹以及.suo文件。bin和obj中的所有内容都将在构建时重新创建。suo是该项目的用户设置,其他人不需要这些设置。

    因此,基本上,我应该遵循某种有见识的尝试和错误方法,直到获得正确的设置为止。在此之前的所有登记都可能有额外的或遗漏的内容。我说的对吗?@Senthil:我基本上就是这么建议的,是的,但看看我的更新,这会让你朝着正确的方向开始。另请注意:某些项目需要辅助文件、外接程序、扩展名或特殊库。我倾向于将所有这些都包含在一个解决方案(和物理)文件夹中,以确保所有内容都在一起,并提供一个用于安装扩展名/加载项的小说明文件。是的,感谢您提及这些特定文件/文件夹:)