【发布时间】:2021-10-28 20:34:18
【问题描述】:
我确实使用 C# 创建了一个单文件应用程序。我有这个可执行文件位于存储库中,并将其作为工件推送。前者用于构建管道,我只需添加 repo 即可使用它。后者是将其用作发布管道的工件。
现在,在构建管道期间,我可以简单地使用它,对其进行测试并且它可以工作。不是很重要,但应用程序做了两件事,它发送邮件和更新工作项。
在发布管道中使用完全相同的应用程序时,我收到以下错误:
无法提取应用程序包的内容。
写入提取文件时 I/O 失败。
我不确定,但这可能与在容器化环境中运行的发布管道代理有关吗?我之所以这么问是因为其他人在 AWS 上使用这种方法和容器时遇到了这样的问题,请参阅Reddit link
[更新]
发布管道在自托管的 Azure DevOps 代理上运行。安装它的环境没有安装 .NET 5 运行时或 SDK。但我希望单文件应用程序也包含运行时,还是我错了?
【问题讨论】:
-
.NET 5 的确切版本是什么?错误来自这里:github.com/dotnet/runtime/blob/…。该错误信息表示
fwrite函数失败,这通常意味着系统无法将文件写入磁盘。你能告诉我们更多关于容器内$HOME使用的文件系统吗?您可以尝试将环境变量DOTNET_BUNDLE_EXTRACT_BASE_DIR设置为容器内的其他位置吗? -
@omajid 它没有在容器上运行。发布此问题时,我也确实错过了一些信息。它在自托管代理上运行。在代理上没有为 .NET 5 安装运行时,不知道这是否导致了错误?尽管未安装运行时,但应该期望单个文件应用程序能够运行(它包含对吗?)
标签: c# .net azure-devops azure-pipelines-release-pipeline .net-core-publishsinglefile