PackageReference版本控制通配符csproj

时间:2018-09-14 00:42:37

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline azure-pipelines-build-task packagereference

我的NetStandard项目中有以下内容

<ItemGroup>
<PackageReference Include="MyReference" Version="1.0.*" />
</ItemGroup>

当我将其更改为使用通配符(而不是1.0.1)时,在依赖项切换上得到一个感叹号,然后是NuGet切换,然后是程序包本身。

当我签入时,CI生成的另一端也失败了,给了我

  

找不到包MyReference。源中不存在具有此ID的软件包:Microsoft Visual Studio脱机软件包nuget.org

使用没有通配符(1.0.1)的实际版本时,上述所有问题都会消失,但是我想确保.NET Core还原任务始终还原到最新的程序包,我希望使用一个简单的通配符会做到的。

NB-我正在使用自己的私有NuGet存储库(软件包管理扩展)

请告知。

为什么在CI生成期间使用通配符失败,表明找不到软件包?

因此,假设我已将project1部署到我自己的NuGet存储库中。 Project2依赖于Project1,该项目已作为NuGet包添加到Project2。 Project1软件包驻留在我自己的存储库中,没有问题也没有错误。

当我使用Wildard并在本地构建时,它可以工作并恢复最新版本。当我签入代码更改时(.csproj中留有通配符)-CI Build失败,并显示上述错误消息。

1 个答案:

答案 0 :(得分:0)

按照the official doc

  

使用PackageReference格式时,NuGet还支持使用   通配符,*,表示主要,次要,补丁和预发行后缀   部分数字。的通配符不受支持   packages.config格式。

您的问题

  

始终在中指定软件包依赖项的版本或版本范围   项目文件,packages.config文件和.nuspec文件。没有   版本或版本范围, NuGet 2.8.x 和更早版本选择最新版本   解决依赖项时可用的软件包版本,而 NuGet   3.x ,然后选择最低软件包版本。指定版本或版本范围可避免这种不确定性。