Nuget不会从源代码管理还原软件包

时间:2019-06-17 07:36:38

标签: visual-studio nuget nuget-package-restore

我们正在迁移所有项目以使用nuget引用。 连同源代码控制(在我们的示例中是DevOps和Git),我注意到nuget软件包管理器的异常行为。

当我们使用nuget引用检入项目时,其他同事(检出该项目)在项目中会出现引用错误。 我对其进行分析后发现,在分支的工作版本中,不包括nugetpackages的dll。 package.config在我看来还不错。

  

我的问题是:我们需要从以下位置检入dll软件包吗?   nuget到源代码管理?以我的理解,nuget应该检查是否   程序包/程序集已下载,如果没有,则应重新下载   他们。

在visualstudio的nuget程序包管理器下->“允许NuGet下载丢失的程序包”和“在Visual Studio中构建期间自动检查丢失的程序包”(在所有客户端上)都选中了这两个选项。

我还仅使用packages.config签入了项目-没有packages文件夹。 但是这些引用没有像以前那样被重新识别/在项目的加载/构建中未发生自动恢复。

2 个答案:

答案 0 :(得分:1)

我解决了从package.config切换到packagereferences的错误。在构建/重建事件中,如果不存在,则现在从nuget源中提取所有DLL。

有关参考https://devblogs.microsoft.com/nuget/migrate-packages-config-to-package-reference/,请参见此博客文章

答案 1 :(得分:0)

否,您不需要在源代码管理中包含软件包的dll。 packages.config就是您所需要的,因为它包含足够的信息来获取运行代码所需的所有必需库。

在Devops中,您需要向构建中添加nuget restore task。这将拉下所有必需的dll。

使用像nuget(或npm等)这样的包管理器,您可以仅将代码保留在源代码控制中。它还可以防止“在我的机器上工作”的情况,其中Developer1具有特定的本地引用的dll,而Developer2没有。

如果个别开发人员发生引用错误,则可能是有人签入了对本地文件而不是nuget包的引用。