微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.NET 5 SDK 发布自包含尝试恢复 2.0.0 运行时?

如何解决.NET 5 SDK 发布自包含尝试恢复 2.0.0 运行时?

在仅安装了 .NET 5.0 SDK (5.0.103) 的计算机上,尝试将任何应用程序dotnet publish 作为独立部署都会失败,即使是简单的空白控制台应用程序也是如此。我使用其他 RID 获得相同的结果,例如 win-x64:

dotnet publish test.sln -c Release -r linux-x64 --self-contained true

错误消息表明由于某种原因构建正在请求 v2.0.0 运行时。这些运行时无法从我们的内部包存储 (Artifactory) 中获得——但我无法弄清楚为什么构建首先会请求该版本。

在请求结束时注意 semVerLevel=2.0.0

Determining projects to restore...
retrying 'FindPackagesByIdAsyncCore' for source 
'https://[artifactoryURL]/FindPackagesById()?
id='Microsoft.NETCore.App.Runtime.linux-x64'&semVerLevel=2.0.0'.
Response status code does not indicate success: 403 (Forbidden).

我在 SDK 3.1 下使用 SCD 没有问题,尽管将项目框架回滚到 3.1(但安装了 SDK 5.0)会导致同样的问题。

我尝试了其他开关,如单文件和准备运行,但没有成功。我无法在我的个人机器上重现这个,但它是在一个稍微更新的版本上(SDK 5.0.200 和 VS2019 16.9.0,而工作时是 16.8.5,他们允许我们现在使用最新的版本)。我觉得我们的内部打包团队以某种方式搞砸了 VS 或 SDK 的安装,但他们坚持认为他们的更改很小并且不会导致这种情况。

这些依赖在哪里表达?为什么会发生?我该如何解决

解决方法

两个问题:

  • 403 错误是因为 NuGet CLI 使用的缓存凭据已过期
  • semVerLevel=2.0.0 指定 NuGet API 版本,而不是请求的包

运行它来更新我的缓存凭据修复了它:

nuget update source "Artifactory" --username ""xxxx"" --password ""xxxx""

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。