我有一个使用以下packages.config的项目:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Framework.Infrastructure.Core" version="1.4.0.6" />
<package id="Framework.Infrastructure.Extensions" version="1.4.0.6" />
</packages>
框架*包在我们的本地存储库中的位置。
我已启用软件包还原并将我们的内部存储库添加到源中。但是,当我尝试从packages.config还原软件包(实际上执行nuget install packages.config -sources....
),我会收到以下错误消息:
error : Unable to find version '1.4.0.6' of package 'Framework.Infrastructure.Extensions'
error : Unable to find version '1.4.0.6' of package 'Framework.Infrastructure.Core'.
这个仓库不再包含旧版的1.4.0.6软件包(几个月前是相关版本),而是包含了新版本(例如1.5.1.6)。
NuGet为何无法找到新版本的软件包? 我能否在packages.config中指定某些语法以确保下载最新版本?
简而言之,有没有除编写自定义脚本以更新软件包之外的其他方法可用?
谢谢。
version="1.4.0.6"
版本(默认情况下在packages.config中)应该被翻译为version >= 1.4.0.6
,但事实并非如此。我认为这是nuget restore中的一个bug,因为“update”根本不使用packages.config(似乎它只使用packages
目录中的文件夹 - 因此,即使您有packages.config文件,如果没有包存在,“update”也不会做任何事情)。 - Michael Logutov.nuspec
文件中,而不是packages.config
。它们用于描述包之间的依赖关系。在项目中指定依赖关系时,你需要使用packages.config
文件,而该文件将始终引用特定版本。是的,你是正确的,除非你最近构建了你的项目并且所有的 NuGet 依赖项都存在于/packages
目录中,否则Update-Package
命令将不起作用。这可能有些不方便或不直观,但我认为这不是一个 bug;这只是 NuGet 运行方式。 - Jesse Webb/packages
目录的内容提交到版本控制中。他们引入了包恢复功能,以允许用户避免这种情况。如果您处于本地存储库中删除软件包的情况下,正如您所描述的问题,您可能需要考虑不使用包恢复。不要与框架对抗。 - Jesse Webb