Nuget 包验证在构建机器上花费的时间太长

Mal*_*nko 5 .net c# nexus nuget nuget-package-restore

我的 CI 管道中有一个构建步骤,我可以在其中恢复解决方案的 NuGet 包。我正在从 Sonatype Nexus 上的 NuGet 托管存储库检索我的 NuGet 包。包还原本身运行得足够流畅,但它在验证某些包(在本例中是 Microsoft 提供的包)时花费了近 2 到 3 分钟的步骤中挂起。我完成此恢复的构建代理无法访问互联网。这就是为什么我还在 Sonatype Nexus 上使用 NuGet 代理。例如,它被挂起的步骤是:

PackageSignatureVerificationLog:PackageIdentity:Microsoft.Owin.3.1.0 来源:...nuget\packages\ PackageSignatureValidity:True

我考虑过将可信签名者列表添加到我的构建的 nuget 配置中。但由于我的机器无法访问互联网,这不会很有帮助。如 Microsoft 文档中所述: https://learn.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-trusted-signers

如https://learn.microsoft.com/en-us/nuget/reference/nuget-config-file中所述, 我还尝试设置在这种情况signitureValidationMode<add key="signatureValidationMode" value="accept" />将默认验证包。即使这是默认情况,如果连接失败则接受它们。但这不会改变我的 NuGet 恢复速度。

除了为我的解决方案需要的所有 NuGet 验证 URL 开放网络访问之外。

有没有办法可以将 NuGet 配置设置为不在构建代理的离线模式下验证 NuGet 包的证书?

Mal*_*nko 7

经过一番挖掘后,我发现了以下Microsoft 文档

这解释了离线计算机(例如构建代理)上可能出现的速度减慢问题以及可能的解决方案。

该问题可以通过将环境变量实施为NUGET_CERT_REVOCATION_MODE来解决offline

NUGET_CERT_REVOCATION_MODE = 'offline'
Run Code Online (Sandbox Code Playgroud)

在 Jenkins 这样的工具中,您可以在环境变量中声明它,也可以在构建机器上运行命令来设置环境变量。