13

我们在构建环境中遇到了一个问题,我们希望我们的持续集成构建下载“最新和最好的”NuGet 包,这些包通过适当地附加版本号和-dev.

每当我们运行命令nuget restore时,它都无法获取任何预发布版本。我查看了NuGet 版本控制页面上的文档,但它相当不方便地省略了有关如何将预发布范围添加到它应该在 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'.

有什么方法可以在 packages.config 文件中指定包含预发布包的版本范围?或者甚至来自 .nuspec 文件本身?

提前谢谢了。

4

3 回答 3

12

AFAIK 无法指定在packages.config. 相反,使用-InstallPrerelease标志 (PowerShell) 或Prerelease标志(命令行 nuget.exe)来指定应优先安装预发布/测试版包而不是稳定包。

请注意,这Foo.1.0.0-dev1234被认为Foo.1.0.0,因此如果存在稳定包 ( ),则不会安装Foo.1.0.0任何beta/预发布包。Foo.1.0.0-xxxx在这种情况下,您需要将 beta 版本升级为(例如)Foo.1.0.1-devxxxx,以便发现它比Foo.1.0.0.

有关详细信息,请参见此处:如何发布 nuget 预发布版本包

于 2014-02-06T02:14:15.103 回答
3

要指明预发布版本,请务必在 packages.config 版本中注明:

<package id="Foo" version="1.0.0-dev1401291727ef87505" />

版本范围是使用 allowedVersions 属性指定的。

要检查预发布包的更新(不仅仅是稳定版),请在“管理 NuGet 包”对话框中,在标记为“仅稳定版”的下拉菜单中选择“包含预发布版”。

于 2015-04-24T18:17:40.420 回答
0

nuget.exe restore将下载 packages.config 文件中指定的确切版本。您将不得不使用将已update-package安装的软件包更新到最新版本。

于 2014-02-04T05:33:33.597 回答