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

时间:2010-08-23 16:23:17

标签: visual-studio-2010 mercurial

我正在使用Google Code来托管我的C#项目。它有一个包含一个类库和一个测试项目的解决方案。我正在使用Visual Studio 2010。

我使用的客户是TortoiseHG。

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

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

我是源代码控制的新手。

除了实际的代码文件本身之外,哪些文件/文件夹应该进入源代码控制?

2 个答案:

答案 0 :(得分:5)

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

  1. 签入文件夹中的所有文件以获得完整的树
  2. 稍微处理一下,注意 Pending Checkins
  3. 待处理但尚未触及的文件是在您保留项目设置时更新的Visual Studio文件。
  4. 现在小心:*.sln*.csproj和其他项目文件也会发生变化,必须签入这些文件。
  5. 其他文件,尤其是那些“看起来”二进制的(例如在obj目录和*.suo文件中)可以标记为排除列表。
  6. 您可能决定包含DLL或EXE的内置版本,但这不是必需的,因为加载项目的任何人都可以构建它。现在,下一步是:

    • 在你工作了一段时间后认为你已经创建了一个稳定的文件列表,将整个项目带到另一个位置并立即编译。它有用吗?它错过了文件吗?

    如果最后一步有效(并且您应该定期检查),那么您的文件就有了坚实的基础。

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


    另外两个拇指规则(哦,三个,实际上):

    • 具体说明你所排除的内容,在你所包含的内容中要自由:包括太多而不是太少;
    • 可安全排除的一些扩展程序:*.user(任何项目的根目录),\obj\**(全部位于临时obj - 文件夹下),*.vspscc和{ {1}}(项目的根),*.vssscc并根据您的偏好设置:*.suo
    • 哦,对于网站项目,这些可能包含或添加\bin\**目录到您的解决方案,您真的不想签入:在此处排除所有。

    编辑:忽略Visual Studio的this question on SO has a very extensive list个文件。

答案 1 :(得分:2)

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