在 Azure DevOps Builds 中,检查是否已弃用和易受攻击的 nuget 包可以很好地使用:
dotnet list "HappySolution.sln" package --deprecated --source https://api.nuget.org/v3/index.json --include-transitive
dotnet list "HappySolution.sln" package --vulnerable --source https://api.nuget.org/v3/index.json --include-transitive
这对于通过 nuget.org 提供的包非常有用,但是 Azure DevOps 中的本地包源中的内部包永远不应该发布到 nuget.org。 构建如何检查这些内部包现在是否已弃用?
可以为每个解决方案生成包列表,然后与已弃用的包升级为的“已弃用”视图的结果进行比较:
nuget list -source https://happy.sos/DefaultCollection/_packaging/InternalNuget@Deprecated/nuget/v3/index.json -AllVersions
但是
nuget list
现已弃用,取而代之的是 nuget search
,它不支持 -AllVersions
选项。
换句话说,
dotnet list "HappySolution.sln" package --deprecated --source https://happy.sos/DefaultCollection/_packaging/InternalNuget@Deprecated/nuget/v3/index.json --include-transitive
始终返回给定项目没有已弃用的包(内部需要时)。
如果您使用 Azure Artifacts 托管自己的自定义 NuGet 源,则 已弃用的包功能尚不可用。
您只能使用 Azure Artifacts 取消列出/删除包。
顺便说一句,许多其他自定义 NuGet 源解决方案确实支持该功能,如果您需要该功能,可以迁移到该功能。