我想知道
在C#或VB.NET项目中,我们应将PACKAGE文件夹(在我的项目的根目录中创建的包含nupkg文件和其他内容的块包文件夹)添加到我们的源代码控制存储库(例如,Git)中。
我想知道
在C#或VB.NET项目中,我们应将PACKAGE文件夹(在我的项目的根目录中创建的包含nupkg文件和其他内容的块包文件夹)添加到我们的源代码控制存储库(例如,Git)中。
Answers:
很多时间过去了,NuGet改变了,所以这是一个新的答案。
NuGet不再在您的源结构内创建一个packages文件夹。而是在您的用户目录中(%HOME%\.nuget\packages
具体来说)有一个目录,其中放置了所有下载的软件包,而项目仅引用了这些软件包。
因此,这几天的简单答案是不,您不应该。如果您担心需要消失的软件包,则应创建一个单独备份的本地NuGet镜像。
这取决于。
查看Bart van Ingen Schenau的答案,以确定是否有可能完全忽略该packages
文件夹。
基本上:是的,NuGet的设计目的是使您可以忽略该packages
文件夹,如果丢失,NuGet将从互联网上提取所有内容。
但是您应该忽略它吗?我说:这要看情况。
IMO这是一个问题:“在软件包存储库不可用的情况下,我们可以继续工作吗”(临时还是永久)
对于我的个人OSS项目,我将packages
所有文件夹都忽略了。
当nuget.org处于离线状态时,我将等待并继续另一天。
但这在工作中有所不同。
当然,您可能仍然在某些计算机上本地拥有这些软件包,但是由于构建服务器无法访问nuget.org,在构建中断时是否可以节省一些值得麻烦的空间?
我们认为空间很便宜,并且我们不希望麻烦,这就是为什么要将packages
文件夹提交到源代码管理。
源代码控制存储库中的内容的基本规则是,将与项目相关的所有内容存储在此处,您需要能够构建,测试,部署和执行该项目,并且不能从存储库中已存在的项目中生成这些项目。
换句话说,如果您可以丢弃PACKAGE文件夹及其内容而又不影响您的能力,则可以继续进行项目工作(构建过程可能会花费更长的时间,但是您不必自己动手安装任何东西),则该文件夹可以安全地从存储库中删除。
如果该文件夹包含第三方软件包,这些软件包可能需要很长时间才能下载,或者可能变得不可用,则这可能是无论如何将它们添加到资源库的原因。