我的产品有多种服务,每种服务都有很多解决方案。为了引用服务,我们使用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所以我不知道为什么它没有拿起它们。我可以打开包管理器并从那里更新。我只想要一种方法来轻松更新每个引用,而无需手动操作。
答案 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的“安装包”部分。