azure-devops - 错误:Azure DevOps Artifact Feed 设置错误的包依赖项
问题描述
我们在 Azure DevOps Server 2020.1(本地)上使用我们的私有工件源。我得到一个提要MyFeed
和一个提要MyFeedTest.
,MyFeedTest
用于暂存我们的 NuGet 包。当它们稳定时,它们会被推送到MyFeed。如果NuGet
提要中的包依赖提要中的另一个NuGet
包,我使用以下行:
<PackageReference Include="ext.lib.MyPackage" Version="*" />
这里的问题是,Azure DevOps 服务器自己确定依赖关系,并且即使包被取消列出,即使整个源被删除,它也会从暂存包中MyFeedTest
获取包中的版本。MyFeed
MyFeedTest
MyFeedTest
Azure DevOps Artifact 不应自行确定与另一个包的依赖关系,也不应忽略包项目文件 ( Version="*"
) 中定义的依赖关系设置。
最后,我的同事在 Visual Studio 中收到以下错误:
ext.lib.MyPackage
Azure DevOps 服务器上的包的依赖项如下所示:
但要记住,删除整个提要后ext.lib.DevExpress
,版本中的包13.1.5.3
不存在MyTestFeed.
那么我该如何解决呢?是否可以将 Azure DevOps 服务器配置为不这样做?我们不能通过这种机制使用分期。
解决方案
这里的问题是 Azure DevOps 服务器自己确定依赖关系
这不是由 Azure DevOps Server 确定的,而是由 NuGet 解决的。Version="*" 表示最高稳定版本。这是有关浮动版本分辨率的文档。我使用dotnet CLI创建 NuGet 包。这是我的示例:
1.在“*.csproj”文件中添加包引用。
<ItemGroup>
<PackageReference Include="ext.lib.MyPackage" Version="*" />
</ItemGroup>
2.使用dotnet pack
命令构建NuGet包。这将生成一个“*.nupkg”文件。将此文件的后缀更改为 zip 和提取文件。
3.我们可以找到一个“*.nuspec”文件。用记事本打开这个文件,我们可以找到以下内容:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>ext.lib.DevExpress</id>
<version>3.2.1</version>
<authors>ext.lib.DevExpress</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package Description</description>
<dependencies>
<group targetFramework="net5.0">
<dependency id="ext.lib.MyPackage" version="1.2.3" exclude="Build,Analyzers" />
</group>
</dependencies>
</metadata>
</package>
所以我们可以发现,在这个包被推送到 Azure DevOps 之前,包的依赖关系已经被解析为显式版本,这是预期的行为。
如果您不再需要 ext.lib.DevExpress 作为依赖项,则需要在 ext.lib.MyPackage 中删除此包引用并再次推送您的包。
推荐阅读
- ssms - 如何在 SSMS 中更新对象资源管理器菜单的颜色
- java - Camel - 在处理器内保持数据库连接
- android - 简单的应用程序无缘无故崩溃
- android - CSS Padding/Margin 在 iOS 和 Android 上的渲染方式不同
- acumatica - 更新标头后将值复制到 SOLines 不会持续存在
- azure - Azure 的 Durable Functions 是否支持 Javascript 中的服务总线队列触发器
- python - 按单独数据帧中的列内容对数据帧进行子集 - Python 3
- vb.net - 如何为每个应用程序只获得一个结果而不是双倍?
- android - 如何为 Android 可下载字体使用非拉丁语言?
- sql - 存在具有不同列的重复行时的SQL Join