关于c#:使用源代码控制时,实际应该提交哪些文件?

When using source control, what files should actually be committed?

本问题已经有最佳答案,请猛点这里访问。

我正在开发一个托管在Google Code上的小项目,使用SVN进行源代码管理。 这是我第一次使用源代码控制,我对实际应该提交到存储库的内容感到有点困惑。 我的项目很简单:一个用C#编写的类库项目。 我写的实际代码是单个文件。

我的问题是:我应该提交整个项目(包括调试,发布,属性等目录)还是我的主.cs文件?

在与Subversion战斗了一段时间后(注意自己:不要重置存储库),看起来我终于让它正确处理了正确布局的目录。


您应该提交除输出文件之外的所有内容。

这意味着提交除\bin\obj目录(以及其中的文件)之外的所有内容。


对于普通开发我不承诺:

  • 箱子
  • OBJ
  • *。用户
  • 名为.suo *

我承诺的其他一切。对于将发送给客户的版本,我还提交了我发送的确切二进制文件。


您应该包括构建项目所需的所有内容,而不是项目生成的任何内容,因为有人重新编译它将能够通过编译生成这些内容。

对于C#项目,您的解决方案文件(.sln),项目文件或文件(.csproj),源文件(.cs)和任何资源文件(.resx,* .bmp,* .png)等)。这包括Properties文件夹中的文件,因为它们包含项目的全局设置。

您不在Debug / Release中提交任何内容,这些是构建项目的输出。根据经验,您不提交二进制文件(* .dll,* .exe)。

如果您已经提交了足够的测试,请检查计算机上不同目录的源并尝试重建项目。


提交:

  • 源文件和文件夹

  • 资源(XML,CSS,ini文件......)

  • 非生成的二进制文件(图像,
    图标,声音..)

不承诺:

  • 编译文件(exe,dll,jar)

  • 生成的源文件

  • 机器配置特定文件,
    即包含说文件路径的文件
    到您计算机上的某个本地文件
    这可能完全不同
    放在我的电脑上。


我承诺一切除了:

  • bin目录
  • obj目录
  • .suo和.user文件

有关最后一位的详细信息,请参阅此问题。


你绝对不想提交构建的库,没有。源控制实际上只是源代码。现在,在.NET项目设置之类的东西中,您也可以将项目文件和解决方案文件视为源,这很好。 (但不是.user或.suo文件,请保留这些文件。)但是,共享已编译二进制文件的团队会遇到麻烦。二进制文件通常很好,例如引用的DLL。只是不是代码的预期构建二进制文件。

基本上,提交您需要的所有内容(并且只提供您需要的内容,至少在项目的代码层次结构范围内)来构建项目的完整版本。但是不要提交实际构建的输出。