Answers:
通常,源代码管理最好仅用于源代码,而生成的文件不是源文件。
也有例外。有时(使用Visual Studio),您可能希望保留.pdb文件以读取小型转储。有时您无法复制工具链,因此不一定必须准确地重新创建生成的文件。在这些情况下,您主要是对已发布的软件(而不是对每一个VCS更改)执行此操作,并且在任何情况下,这些内容都可以轻松地驻留在版本控制的文件夹中。(无论如何,这些通常都是二进制文件,并且没有从一个版本到另一个版本的可理解的更改,并且不会因为进入VCS而受益匪浅。)
简单的答案?不,不要这样做!我想不出很多理由,但没有理由要这么做。
我唯一能想到的是,您是否可以检查dll是不是来自第三方库,而您并不希望每个开发人员都已安装过该库。但即使如此,它也不位于bin文件夹中。
话虽这么说,我确实在一家公司工作过,要求将每个部署程序包放入源代码管理中,但这是为了使我们可以跟踪提供给客户的各种构建,并且如果需要的话可以轻松回滚。
我们不将bin文件夹签入TFS。您可能已经注意到,如果您这样做,那么每当任何开发人员构建解决方案时,他们都会签出bin文件夹。不好。但是,项目需要一些库才能进行编译和运行,我们的规则是任何项目都应能够从源代码控制中打开,并且应进行编译和运行。因此,我们要做的是为项目必须引用的所有DLL创建一个“ BinRef”文件夹,并在BinRef文件夹中创建对副本的“项目引用”。BinRef文件夹已签入TFS。
这种方法的另一个优点是BinRef始终位于Web项目的根级别。如果我的项目位于其中,C:\Projects\Marcie\SomeProjectCategory\ProjectA
并且创建了对位于其中的DLL C:\DLLsThatILike
的引用,则该引用最终看起来像
\..\..\..\NiceThing.dll
。您可以将项目文件保存在C:\ProjectA
其中,这意味着对NiceThing的项目引用将在您的计算机上爆炸。希望人们不会以这种方式进行引用,但是我已经看到它发生了。
作为更改请求过程的一部分,我们检入bin目录的内容。为避免出现只读问题,我们将内容复制到单独的文件夹中,然后从那里检入。我们的公司政策要求将所有进入生产环境的二进制文件与源文件分开检入。这不是最好的解决方案,但是它可以工作,并且确实为我们提供了生产中的确切文件。