4

基本上我的问题是您将 C# 的哪些部分存储在存储库中?在我去年参加的一堂课中,有人告诉我,您永远不会将生成的文件存储在版本控制中(因此,如果您正在编写 c,请不要存储 .o/.exe 文件)。

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

但是对于 Visual Studio 中的 C# 项目,我在决定存储什么时遇到了一些问题。

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

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

那么我应该存储什么?

谢谢。

4

6 回答 6

5

他们按照我的方式进行操作-我存储了所有内容,除了:

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

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

于 2012-07-09T19:31:13.713 回答
2

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

一般来说,不要存储编译的产物——代码生成的程序集。

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

于 2012-07-09T19:30:05.023 回答
2

我同意其他所有人的观点——忽略二进制文件、.suo 和 .user——但是我确实发现使用AnkhSVN可以大大简化这一点,因为您直接从 VS 提交并且它可以正常工作。

于 2012-07-09T19:33:28.923 回答
1

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

*.o *.lo *.la *.al .libs *.so .so.[0-9] *.a *.pyc *.pyo .rej 。~ ~ # # .#* .*.swp .DS_Store 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 release Release debug Debug ignore Ignore obj Obj *.csproj.user *.user bin BIN

有关 svn 的全局与本地忽略模式的更多信息,请查看此处:

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-ignore.html

一般经验法则

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

于 2012-07-09T19:47:26.447 回答
1

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

于 2012-07-09T19:31:23.557 回答
1

我们将所有内容存储在解决方案文件夹及其子文件夹中。但是我们通过添加这些排除项

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

参考
svn:ignore
TortoiseSVN

于 2012-07-09T19:33:13.540 回答