6

我知道我应该更多地使用 nuget,但此时我并不完全理解细微差别,所以我仍然倾向于获取源代码并构建项目,然后引用该项目,或者我创建自己的“dlls”文件夹并手动复制dll在里面。

作为我学习过程的一部分,我试图了解在使用 nuget 时什么是关键的,什么不是。例如,我已经完成了 install-package restsharp,现在当我检查源代码控制时,我得到了类似“packages/RestSharp.103.4/lib/net4/RestSharp.xml”的文件。我假设 nuget 将帮助我进行升级等,它需要具有某些元数据类型文件。

我的问题是:我应该忽略“包”目录中的任何或所有文件吗?如果是这样,是什么以及为什么。

谢谢

4

2 回答 2

6

有两种工作流程可以处理这种情况。最初的工作流程是提交包目录中的所有文件(您不需要忽略任何文件),以便您团队中的其他开发人员拥有构建项目的包。

自 NuGet 1.6 以来可用的较新工作流是为解决方案启用 NuGet 的包还原功能。这将导致在构建项目时自动下载任何丢失的包文件,但现在您不再需要将大型二进制文件提交到版本控制。从 NuGet 2.0 开始,现在需要让团队中的每个开发人员在 Visual Studio 选项中启用 NuGet 的包还原权限。

于 2012-08-31T15:46:10.900 回答
2

在 Visual Studio 中,在 Project 下,有一个名为Enable NuGet Package Restore. 当您打开一个项目并且您正在使用Web 应用程序项目(恢复不适用于网站项目)时,此功能可用。选择它并启用包还原。然后,您无需将 Packages 目录提交到任何地方的源代码管理。

NuGet 的文档有更多关于包还原的信息。

如果您想手动模拟包还原,则需要解析packages.config文件然后执行NuGet 命令行引导程序( nuget.exe) 来安装这些包。幸运的是,引导程序将 packages.config 作为参数。使用以下步骤应该可以恢复您的包:

  1. packages从解决方案所在的目录创建一个文件夹。
  2. 从包目录从命令行运行以下命令:

    nuget.exe 安装 [packages.config 的路径]

这一切都可以从一个批处理文件中完成,或者您想自动化它。

于 2012-08-31T15:40:04.887 回答