在我们的构建环境中,我们面临一个问题,我们希望我们的持续集成构建能够下载“最新和最棒”的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'.
有没有什么方法可以指定一系列的版本,这些版本包含了预发布文件中的预发布包?甚至是从.nuspec文件本身?
多谢提前。
最佳答案
afaik无法指定在packages.config
中使用预发布包。相反,请使用-InstallPrerelease
标志(powershell)或Prerelease
标志(命令行nuget.exe)指定应优先于稳定的包安装预发行版/beta包。
注意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
才能发现它比Foo.1.0.0
更新。
详情请参见此处:How to publish nuget prerelease version package