在SVN repo中存储Visual C#项目的约定

在SVN repo中存储Visual C#项目的约定,c#,svn,version-control,project,C#,Svn,Version Control,Project,基本上,我的问题是C#的哪些部分存储在存储库中?在我去年参加的一个课程中,我被告知你从不在版本控制中存储生成的文件(因此,如果你在写c,不要存储.o/.exe文件) 但是使用c很容易,因为只需保存.c、.h和makefile,就可以签出repo,运行make文件,一切正常 但是在VisualStudio中使用C#项目时,我在决定存储什么时遇到了一些问题 如果我只存储.cs文件,将它们添加到其他计算机上的项目中会很尴尬。我也应该存储项目文件吗 我遇到的问题是,我过去只存储整个项目目录。但是,当我将

基本上,我的问题是C#的哪些部分存储在存储库中?在我去年参加的一个课程中,我被告知你从不在版本控制中存储生成的文件(因此,如果你在写c,不要存储.o/.exe文件)

但是使用c很容易,因为只需保存.c、.h和makefile,就可以签出repo,运行make文件,一切正常

但是在VisualStudio中使用C#项目时,我在决定存储什么时遇到了一些问题

如果我只存储.cs文件,将它们添加到其他计算机上的项目中会很尴尬。我也应该存储项目文件吗

我遇到的问题是,我过去只存储整个项目目录。但是,当我将项目放在另一台计算机上时,它会抱怨临时密钥错误(.pfx文件)

那么我应该储存什么呢

谢谢。

这个建议不太适合大多数C#项目的工作方式,特别是UI-Visual Studio生成设计器文件,例如,应该签入哪个文件(否则,其他获取源代码的人将无法编译)

一般来说,不要存储编译的人工制品项—即代码生成的程序集


编译和运行不需要的项目(如用户特定的设置文件)也不应检入。

它们是我的工作方式-我存储所有内容,除了:

  • 解决方案中每个项目的
    bin
    obj
    目录
  • .user
    .suo
    文件-它们包含特定于用户的项目和解决方案选项
  • Resharper生成的文件(Resharper是一个Visual studio扩展,用于在解决方案文件夹中创建一些文件)

基本上,经验法则是不存储特定于特定机器或由工具生成的任何内容(无论是编译器还是Visual Studio扩展,如我的例子中的Resharper)。

我存储整个解决方案文件夹,但我为*.user、*.suo文件添加例外。我也不会提交任何bin和obj文件夹。

我们将所有内容存储在解决方案文件夹及其子文件夹中。但我们通过

`svn:ignore` = 
*.suo
*.ncb
*.user
_ReSharper.*
[Bb]in
[Oo]bj
[Dd]ebug
[Rr]elease
供参考


我同意其他所有人的看法-忽略二进制文件、.suo和.user-但是我发现,当您直接从VS提交时,使用它可以大大简化这一过程,而且它可以正常工作。

其他所有人似乎都涵盖了大部分内容,但我想我会增加我的两分钱。我使用以下全局忽略模式进行C#开发。这包括系统文件和不需要的解决方案文件

*.o*.lo*.la*.al.libs*.so.so.[0-9]*.a*.pyc*.pyo.rej.~~~##.*.swp.DS\u存储thumbs.db thumbs.db*.bak*.class*.dll*.exe*.mine*.obj*.ncb*.lib*.log*.idb*.pdb*.ilk*.msi*.res*.pch*.suo*.exp.~。cvs cvs.cvs.cvs发布调试调试忽略忽略obj obj*.csproj.user*.user bin

有关svn的全局和局部忽略模式的更多信息,请参见此处:

一般经验法则


切勿存储任何生成的输出或用户特定的设置。此外,如果可能,避免存储不必要的二进制文件,因为它们无法使用上下文合并。

Mmm,我该如何使用该语句?svn commit*?同时,我还添加了对OrtoiseSVN和svn书籍的引用,以便在VS中使用svn,我真的无法充分推荐它。它确实有一些烦恼(没有双击来比较)-但与使用它的主要收益相比,这些烦恼微不足道。@NikolaAnusev我花了很长时间尝试其他选项,然后才开始使用AnkhSvn。真是太神奇了,我得了安卡,看起来真的很好!但是如何处理临时密钥文件呢?(.pfx)。您是否将其添加到回购中。。。或者有没有一种完全不用密钥的方法(关闭签名或其他任何方式)