我们在构建环境中遇到了一个问题,我们希望我们的持续集成构建能够通过适当地附加版本号{{1}来下载标记为预发布的“最新且最好的”NuGet包。 }。
每当我们运行命令-dev
时,它都无法获取任何预发布版本。我查看了NuGet Versioning页面上的文档,但它不方便地省略了有关如何将预发布范围添加到应在packages.config文件中下载的允许版本的详细信息。
目前,packages.config文件如下所示:
nuget restore
我们希望NuGet至少能够看到然后从以下列表中选择最新版本:
不幸的是,没有看到预发布版本,并且恢复过程只使用“已发布”的软件包。尝试下载仅预发布包时的典型错误消息是:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Foo" version="1.0.0" targetFramework="net35" />
</packages>
我是否可以通过某种方式在packages.config文件中指定包含预发布包的一系列版本?甚至是从.nuspec文件本身?
非常感谢提前。
答案 0 :(得分:11)
AFAIK无法指定在packages.config
中使用预发布包。相反,使用-InstallPrerelease
标志(PowerShell)或Prerelease
标志(命令行nuget.exe)指定应安装预发布/测试版软件包而不是稳定软件包。
请注意,Foo.1.0.0-dev1234
被认为是之前的而不是Foo.1.0.0
,所以如果稳定包存在(Foo.1.0.0
)那么任何Foo.1.0.0-xxxx
beta /不会安装预发布包。在这种情况下,您需要将测试版升级到(例如)Foo.1.0.1-devxxxx
,以使其被发现为“{更新”而不是Foo.1.0.0
。
答案 1 :(得分:1)
要指明预发布版本,请务必在packages.config版本中对其进行标注:
ROWLOCK
使用allowedVersions属性指定版本范围。
要检查预发布软件包的更新(不仅仅是稳定版),请在“管理NuGet软件包”对话框中,在标有“仅稳定”的下拉列表中选择“包含预发布”。
答案 2 :(得分:0)
nuget.exe restore
将下载packages.config文件中指定的确切版本。您必须使用update-package
将已安装的软件包更新到最新版本。