NuGet 恢复包但缺少 DLL

NuGet restoring packages but missing DLLs

我已经在我的机器上成功地获得了 Visual Studio 解决方案 运行,但是当我将更改提交到 BitBucket 并且另一个用户已经撤下该项目并在 Visual Studio 或 TeamCity,我们收到如下错误:

error CS0234: The type or namespace name 'Entity' does not exist in the namespace 
'System.Data' (are you missing an assembly reference?)

查看项目时,我可以看到每个 NuGet 包文件夹都存在,但缺少 DLL。这本身就是一个easy fix;我只是删除了有问题的包,在下一个构建中 NuGet 恢复了包,DLL 现在存在了。

我不明白为什么 NuGet 没有在第一次尝试时获取 DLL?

我花了一段时间才弄清楚发生了什么,但问题不是 NuGet,而是源代码控制的设置。

我没有将 packages 文件夹添加到 Mercurial 的忽略列表中。默认情况下,它将 NuGet 包上传到 BitBucket 但忽略 DLL。当另一个用户下载项目时,它拉下了包,Visual Studio 或 TeamCity 看到包文件夹并假定包已经下载。将 packages 文件夹添加到 .hgignore 文件将阻止这种情况发生。