Azure DevOps构建中如何还原最新预发布NuGet包?
问题根因
报错的核心触发逻辑是NuGet默认规则下,未明确声明允许预发布版本时,包还原操作只会匹配稳定版本包,即使源中存在符合版本范围的预发布版本也不会自动选用。
解决方案(二选一即可)
方案1:修改项目的包引用规则
直接在PackageReference的版本规则中声明允许匹配预发布版本,将原版本通配符0.*改为0.*-*即可,修改后的配置如下:
<ItemGroup> <PackageReference Include="MyNewNuGetPackage" Version="0.*-*" /> </ItemGroup>
*-*后缀表示允许匹配任意预发布后缀的版本,NuGet会自动拉取符合主版本规则的最新预发布包。
方案2:给还原步骤添加预发布允许参数
如果不想修改项目文件,可以在dotnet restore命令中添加--prerelease参数,强制还原时包含预发布版本,同时建议添加--no-cache参数跳过本地缓存,避免刚推送的包还没同步到本地缓存导致拉取失败。修改后的还原步骤配置如下:
- task: DotNetCoreCLI@2 inputs: command: 'restore' projects: 'MyTargetProject.csproj' feedsToUse: 'select' vstsFeed: 'my-local-feed-id' arguments: '--prerelease --no-cache'
额外注意事项
如果配置修改后仍偶发拉不到刚推送的包,可能是Azure DevOps内部feed的索引延迟导致,可以在包推送步骤和还原步骤之间添加一个10秒以内的等待任务,规避索引未更新的问题。
内容的提问来源于stack exchange,提问作者Jamie Burns
相关产品推荐
相关产品推荐

