Nuget Update-Package没有找到新版本的软件包

时间:2014-02-03 20:36:14

标签: c# nuget

我的产品有多种服务,每种服务都有很多解决方案。为了引用服务,我们使用Nuget来下载和引用dll。由于我们仍然在该产品的早期发展有很大的变化,以核心的DLL,我们有很多合并问题和烦恼与更新引用。

我尝试使用Update-Package -ProjectName XProject -Safe认为这将完全符合我的要求,使用相同的Major / Minor版本更新所有引用。但是,它只是跳过所有文件,说它们已更新。当我看到Nuget时,它清楚地注意到有一个新版本,所以我不确定问题是什么......

No updates available for 'Framework.EntityModel'.
No updates available for 'Framework.Core'.
package.config中的

<package id="Framework.Core" version="1.0.14030.1137" targetFramework="net45" />
<package id="Framework.EntityModel" version="1.0.14030.1137" targetFramework="net45" />

nuget中有一些带有标签的版本:1.0.14034.1137所以我不知道为什么它没有拿起它们。我可以打开包管理器并从那里更新。我只想要一种方法来轻松更新每个引用,而无需手动操作。

1 个答案:

答案 0 :(得分:2)

这取自页面底部的NuGet @的版本控制页面:

  

在程序包安装期间不再不必要地更新依赖关系

     

在NuGet 2.5之前,安装依赖于a的软件包   包已经安装在项目中,依赖性就是   作为新安装的一部分更新,即使现有版本   满足了依赖。

     

从NuGet 2.5开始,如果已经满足依赖版本,   在其他软件包安装期间,不会更新依赖项。

     

情景:

     

源存储库包含版本1.0.0和1.0.2的软件包B.   它还包含包A,它依赖于B(&gt; = 1.0.0)。

     

假设当前项目已经包含B版本1.0.0   安装。现在您要安装包A。

     

在NuGet 2.2及更早版本中:

     

安装软件包A时,NuGet会自动将B自动更新为1.0.2   虽然现有版本1.0.0已经满足依赖性   版本约束,即> = 1.0.0。在NuGet 2.5和更新版本中:

     

NuGet将不再更新B,因为它检测到现有的   版本1.0.0满足依赖版本约束。更多   有关此更改的背景,请阅读详细的work item以及相关内容   discussion thread

编辑:

以上解释了为什么您可能遇到问题,但实际上有助于解决问题,请查看http://blog.nuget.org/20131216/update-all-experience-explained.html。它向您展示了如何使用Install-Package的DependencyVersion参数或覆盖nuget.config文件中的默认行为以使用“HighestPatch”。

有关详细信息,请参阅http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference的“安装包”部分。