首页 文章

如何'nuget restore'下载预发布包?

提问于
浏览
11

我们在构建环境中遇到了一个问题,我们希望我们的持续集成构建下载'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 回答

  • 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 / pre-release软件包 . 在这种情况下,你需要将beta版本升级到(比方说) Foo.1.0.1-devxxxx ,因为它被发现为'newer'而不是 Foo.1.0.0 .

    有关详细信息,请参见此处:How to publish nuget prerelease version package

  • 0

    要指明预发布版本,请务必在packages.config版本中对其进行标注:

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

    使用allowedVersions属性指定版本范围 .

    要检查预发布包的更新(不仅仅是稳定),请在“管理NuGet包”对话框中,在标有“仅稳定”的下拉列表中选择“包含预发行” .

  • 1

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

相关问题