在我们的构建环境中,我们面临一个问题,我们希望我们的持续集成构建能够下载“最新和最棒”的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-xxxxbeta/pre-release包都不会被安装。在这种情况下,您需要将beta版本提高到(比如)Foo.1.0.1-devxxxx才能发现它比Foo.1.0.0更新。
详情请参见此处:How to publish nuget prerelease version package

08-18 12:24