我们在构建环境中遇到了一个问题,我们希望我们的持续集成构建下载'latest and greatest' NuGet软件包,这些软件包通过适当地附加版本号 -dev
来标记为预发布 .
每当我们运行命令 nuget restore
时,它都无法获取任何预发布版本 . 我查看了NuGet Versioning页面上的文档,但是它很不方便地省略了有关如何将预发布范围添加到它应该在packages.config文件中下载的允许版本的详细信息 .
目前,packages.config文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Foo" version="1.0.0" targetFramework="net35" />
</packages>
我们希望NuGet能够至少能够看到然后从以下列表中选择最新版本:
-
Foo.1.0.0-dev1401291727ef87505.nupkg
-
Foo.1.0.0-dev14012918064fdf488.nupkg
遗憾的是,没有看到预发布版本,恢复过程只使用“已发布”的软件包 . 尝试下载仅预发布包时的典型错误消息是:
Unable to find version '1.0.0' of package 'Foo'.
Is there some way that I can specify a range of versions that includes pre-release packages in the packages.config file? Or even from within the .nuspec file itself?
提前谢谢了 .
3 回答
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 / pre-release软件包 . 在这种情况下,你需要将beta版本升级到(比方说)Foo.1.0.1-devxxxx
,因为它被发现为'newer'而不是Foo.1.0.0
.有关详细信息,请参见此处:How to publish nuget prerelease version package
要指明预发布版本,请务必在packages.config版本中对其进行标注:
使用allowedVersions属性指定版本范围 .
要检查预发布包的更新(不仅仅是稳定),请在“管理NuGet包”对话框中,在标有“仅稳定”的下拉列表中选择“包含预发行” .
nuget.exe restore
将下载packages.config文件中指定的确切版本 . 您必须使用update-package
将已安装的软件包更新到最新版本 .