一个好的答案是查看您的全局 gitignore 文件 ( gitignore_global.txt
)。如果您正在使用 Windows 机器(我假设您是),您可能需要签入我的文档。如果您安装了 SourceTree,请同时检查 Atlassian 的程序文件。*.dll
您很可能会在这些文件中看到它。删除它,你应该很好。
现在,我知道重要的是您不应该在您的 git 存储库中包含 DLL。Cupcake 提出的每一点都是有效的。然而,实际上,大小问题实际上只适用于频繁更改的DLL。由于整个解决方案中的 DLLobj
和bin
文件夹几乎在每次构建时都会发生变化,因此对于 git 来说,这将是一场噩梦。但是,您的软件包存储库更改相对较少。即使在极端情况下,它们也不会构成太大的威胁:如果您有 20 个包,每个包都有一个 100KB 的 DLL,并且每个包都运行了 10 次更新,那么您的 1GB 限制总共会达到 20MB - 2% . 相反,如果您决定不包含 DLL,就像 Cupcake 和许多其他人所说的那样,那么这意味着您必须处理以下两种后果之一:
- 您的存储库不会在结帐时构建
- 您必须使用 nuget 包还原 - 这听起来很棒,但本质上意味着您在每次结帐时都重新安装包。它可能是每一个构建,但很可能只在结帐后的第一个构建中。
这些后果似乎都不可接受。此外,Nuget 包还原不能立即配置为通过 Visual Studio 轻松更新包,即使 VS 的内置包管理器使这非常简单。让 git 找到不在其中的 DLLbin
并obj
自然地添加它们意味着您可以通过 Visual Studio 中的 NuGet 更新包,git 将找到这些新包,删除旧包,并且您的解决方案在结帐时构建。
这样做的副作用非常重要:这意味着您必须确保您的存储库(以及克隆到您机器上的每个存储库)必须包含bin
和obj
在它们的存储库级别.gitignore
中。如果您不这样做,那么那些频繁更改的 DLL 将进入您的存储库,它们很可能会占用大量空间。不利的一面是,那些文件夹中有很多东西你应该已经忽略了 - 调试包等 - 无论如何你希望已经这样做了。事实上,.gitignore
您为 .NET/Windows 项目找到的许多预配置文件已经包含对这些文件夹的忽略。
最后,虽然在您的 git 存储库中不包含 DLL 的原则是好的,但您不能忘记它对于频繁更改的DLL 是最重要的,并且您的依赖项肯定应该包含在您的项目中以保持一致性和易用性-构建和效率。