Nuget包:应该签入什么?

Nuget包:应该签入什么?,nuget,nuget-package,Nuget,Nuget Package,我想将我的完整解决方案签入源代码管理存储库(GIT)。 我很清楚关于是否将Nuget包签入源代码管理的讨论。出于各种原因,我决定将我的Nuget包置于源代码管理中 我的问题是:至少应该将哪些文件签入存储库?有各种文件显然是构建的一部分,还有一些是Nuget设置的一部分。是否有简单的方法只获取核心(构建相关)文件?我本来希望做一个简单的“清理”并签入所有内容,但是这样做之后,Nuget“packages”目录中仍然有.dll和.pdb文件 非常感谢您对本主题的任何指导 如果您决定添加package

我想将我的完整解决方案签入源代码管理存储库(GIT)。 我很清楚关于是否将Nuget包签入源代码管理的讨论。出于各种原因,我决定将我的Nuget包置于源代码管理中

我的问题是:至少应该将哪些文件签入存储库?有各种文件显然是构建的一部分,还有一些是Nuget设置的一部分。是否有简单的方法只获取核心(构建相关)文件?我本来希望做一个简单的“清理”并签入所有内容,但是这样做之后,Nuget“packages”目录中仍然有.dll和.pdb文件


非常感谢您对本主题的任何指导

如果您决定添加packages目录,最好签入该目录中的所有内容。尤其需要dll文件,因为它们是通过NuGet发布的内置产品,但您无法真正确定需要哪些文件,因为任何NuGet包都可能包含可以执行任何操作的构建逻辑(例如,使用包中包含的任何文件)


最好使用
.gitignore
文件,并删除文件中有关NuGet软件包的部分中与
**/packages
目录相关的行。

感谢您的回复,Martin。我以为DLL是按照本地系统的要求构建的?我不知道如何区分任何给定包的“基本内容”,因此我提出了一个问题。如果可能的话,我尽量避免签入二进制文件(包括DLL),因为它们代表了我在远程git服务器上没有的几GB磁盘空间(这是一项付费服务,所以我需要了解磁盘空间的使用情况)。NuGet包包含在构建过程中引用(和复制)的预构建DLL。无需将其签入,VS可以自动恢复软件包,并且
nuget.exe restore
可以在脚本构建过程中下载软件包。但是有些人确实会在packages文件夹中进行检查,以确保如果从NuGet中删除了一个包,他们仍然可以进行构建。谢谢,Martin。我不知道它们是预先建造的。我已经决定,我希望所有必要的代码都在我的源代码控制范围内,因为我不希望依赖第三方来构建我的代码。听起来除了一个文件一个文件地清理目录之外,没有其他方法可以找到我的项目的最低构建要求?可能吧。另一种方法是在项目中创建一个包含所有nupkg文件的目录,并通过创建
nuget.Config
文件(类似于中描述的nuget.Config文件)将该目录设置为包源,而不是nuget.org(因为压缩后的nupkg通常比整个目录占用更少的空间。这使得对.nupkg文件使用Git LFS变得更容易)。请注意,如果需要在NuGet包中修复错误,删除对NuGet.org提要的依赖关系并不能删除对第三方项目的依赖关系。。(特别是如果包不是从公共开源项目生成的)