【发布时间】:2021-06-06 07:18:14
【问题描述】:
在仅安装了 .NET 5.0 SDK (5.0.103) 的机器上,尝试将 dotnet publish 任何应用程序作为独立部署将失败,即使是简单的空白控制台应用程序也是如此。我使用 win-x64 等其他 RID 得到相同的结果:
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 安装,但他们坚持认为他们的更改很小,不会导致这种情况。
这些依赖关系在哪里表达?为什么会这样?我该如何解决?
【问题讨论】:
-
Mac 上没有复制 - 我使用 Macbook 开发工具和站点,最终在 Windows 上部署为 SCD。我还为 Mac 发布以测试这些工具。您发布的 URL 尝试在您自己的包商店中查找运行时,这可能是配置问题的结果。您能否使用一个简单的 .NET Core 控制台应用程序重现该问题, 不涉及您自己的构建服务器或包存储?
-
这就是我的想法。你的“csproj”文件是什么样的?
-
请求可能来自构建脚本而不是 .NET。或者,一个单元测试项目仍然以 .NET Core 2.1 而不是 5 为目标。
-
这是一个凭据问题——因为它是一台工作机器(无法访问 Internet),我不得不在这里重新输入它,我意识到 403 错误意味着我忘记更新缓存的凭据NuGet CLI 使用。此外,“2.0.0”是 NuGet API 版本,而不是请求的包版本。