version-control - 如何在团队开发中正确使用 NuGet?

标签 version-control nuget

所以我想使用 NuGet 来管理我用于我的团队和我正在从事的特定项目的各种项目。到目前为止,我已将我的 .js 库文件放在我的 Web 解决方案 (ASP.NET MVC 2) 的/Scripts 目录中并引用了这些文件。当然,这是手动的,在升级等过程中管理起来很烦人。

现在我正在使用 NuGet,我意识到 NuGet 的整个目标是让这变得相当轻松。此外,似乎我不应该将我的包检入我的存储库(也就是我不再需要管理我的外部库)。但是,当我从 NuGet 获取 jQuery(例如)时,它会将其特定文件放在我项目的/Scripts 目录中。

我感到困惑的地方 - 如果有的话,此时我应该检查源代码管理吗?我还要检查/Scripts 目录吗?

此外,如果其他人正在处理此项目并从源代码管理中 check out 解决方案,是否会自动下载包(假设该解决方案带有有效的 packages.config)?

在我们开始全职使用 NuGet 之前,我只是想澄清几点。

最佳答案

NuGet 与 VCS 有两种情况: checkin 或不 checkin ,这是个问题。
我认为两者都是有效的,但是当使用 TFS 作为 VCS 时,我肯定会选择 no-checkin policy for NuGet packages .

也就是说,即使对 NuGet 包使用无 checkin 策略,我仍然会 checkin 这些 NuGet 包对我的项目所做的内容更改。 \Scripts文件夹将被完整 checkin (不是选择性的,不被忽略)。

包的无 checkin 政策对我来说意味着:不 checkin \Packages 文件夹( cloak it ,忽略它),除了 \Packages\repositories.config文件。

因此,您实际上并未提交任何 NuGet 包,并且在使用 Enable-PackageRestore 时从 NuGetPowerTools(即将在 NuGet v1.6 中内置),任何检查代码和构建的机器都将在预构建步骤中获取所有必需的 NuGet 依赖项。
本地开发机器和构建服务器都是如此,只要 Enable-PackageRestore在您的解决方案中启用并指向正确的 NuGet 存储库(本地、内部、外部)。

如果你考虑一下,当安装一个只添加对一些二进制文件的引用的 NuGet 包时,你已经在无 checkin 场景中做同样的事情:你不会提交 \Packages文件夹的子文件夹,但仍然需要提交项目更改(添加的引用)。

我会说,保持一致 (对于任何类型的包),它是否仅包含二进制文件、仅内容或混合。 Do not commit the packages themselves ,请务必将更改提交到您的源。 (如果只是为了避免查找内容更改的麻烦)

关于version-control - 如何在团队开发中正确使用 NuGet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8440204/

相关文章:

version-control - Mercurial : Change root of named branch

git - 如何恢复已删除的文件

version-control - 如何通过从两者中选择行来 merge 冲突?

authentication - 发布到自托管 NuGet 服务器时如何修复 401 身份验证错误

c# - ASP.NET:由Nuget引起的.NET Framework/Standard/Core DLL冲突。 “您必须添加对程序集System.Runtime的引用...”

c# - 该软件包需要 NuGet 客户端版本 '3.6.0' 或更高版本

visual-studio-2012 - Visual Studio/NuGet 缺少引用

version-control - 为什么 Visual SourceSafe 的浏览量这么差?

git - Grails和.gitignore

visual-studio - 自动构建 NuGet 包,包括引用的依赖项