Azure Devops Build-当特定的nuget包版本不存在时想要失败



我们使用Azure Devops进行构建。我们的解决方案有各种nuget包。目前,当我们指定的版本不存在时,nuget还原只会拉取下一个现有版本,但我们希望这样做,使构建失败,不会拉取下个现有版本。

例如,我们指定v1.0,如果它不存在,我们希望整个构建失败,而不是拉取v1.1。有办法做到这一点吗?谢谢

您应该将您引用的包的版本包装在csproj文件的方括号中,如下所示:

<PackageReference Include="ExamplePackage" Version="[1.0]" />

有关更多详细信息和其他选项,请参阅文档。

正如另一个答案所说,您可以使用NuGet的语法进行精确的版本匹配,而不是"大于或等于";。这是有文件记录的。这只适用于直接包含在项目中的包。它不适用于可传递的依赖关系。

根据您的用例,另一个选项是注意,当请求的版本不存在时,NuGet会向您发出警告,而它会使用更高的版本。然后,告诉NuGet将此警告视为错误:

<WarningsAsErrors>$(WarningsAsErrors);NU1603</WarningsAsErrors>

这样做的一个优点是,您可以将它放在回购根目录中的Directory.Build.props中,解决方案中的所有项目都将获得这种行为。

这也适用于可传递的依赖关系。但出于这个原因,如果有一个包你无法控制谁最终声明了一个不存在的依赖项,那么最好的选择可能是将缺失的依赖项声明为直接的包引用,并将版本更改为存在的版本(NuGet的"最接近的胜选"规则(。或者,添加特定于包的NoWarn可能会起作用:

<PackageReference Include="Newtonsoft.Json" Version="13.0.0" NoWarn="NU1603" />

最新更新