【发布时间】:2020-05-23 01:16:28
【问题描述】:
我正在尝试使用 .NET Core 3.1 构建类库并将其打包到 NuGet 中。这一切都在我的开发机器上构建良好,但在 DotNetCoreCLI pack 命令期间 Azure 管道构建失败。在使用 UseDotNet 在构建机器上安装 .NET Core 3.1 后,我能够继续构建。构建和测试运行良好,所以我相信 3.1 版本安装正确。
当我添加 pack 命令时,该步骤总是失败。这是我正在使用的命令:
- task: DotNetCoreCLI@2
displayName: Package NuGet
inputs:
command: 'pack'
projects: '**/*.csproj'
arguments: '--configuration $(BuildConfiguration)'
outputDir: '$(Build.ArtifactStagingDirectory)/packages'
在此步骤中我收到以下错误:
/opt/hostedtoolcache/dotnet/sdk/3.1.101/Sdks/NuGet.Build.Tasks.Pack/build/NuGet.Build.Tasks.Pack.targets(198,5): 错误 NU5026:文件 '/home/vsts/work/1/s/ClassLib31/bin/调试/netcoreapp3.1/ClassLib31.dll' 在磁盘上找不到要打包的内容。 [/home/vsts/work/1/s/ClassLib31/ClassLib31.csproj]
请注意,上面的路径正在查找 bin Debug 文件夹,但这是一个发布版本。所有任务都使用相同的 BuildConfiguration 变量,但在此任务中,它似乎是在 Debug 文件夹中查找 dll。任何想法为什么?
补充说明: - 此构建脚本适用于 .NET Core 3.0 项目。我尝试将库切换到目标 3.0 并删除了 3.1 安装步骤。包按预期工作。 - 当我构建库的 Debug 版本时,此构建脚本有效(正如您所料,因为任务正在该 bin 文件夹中查找)。
【问题讨论】:
-
很奇怪。根据您的描述,问题似乎来自
.net core3.1,但我在托管代理ubuntu-16.04和ubuntu-18.04上使用.net core 3.1对其进行了测试,它工作正常。不确定参数debug来自哪里,如何指定直接参数,例如:arguments:--configuration Release? -
我尝试在参数中指定 --configuration Release,但这没有帮助。它仍然给出了与调试路径相同的错误。我也在使用 ubuntu-18.04 托管代理。而且我使用的是 DotNetCoreCLI pack 命令,而不是 NuGetCommand 命令。
-
同时找到了解决方法。用 NuGetCommand 包替换 DotNetCoreCLI 包命令可解决此问题。使用该命令,我可以将 .NET Core 3.1 库打包到一个 nuget 中……奇怪的是它适用于该构建任务,但不适用于 DotNetCoreCLI 任务。
-
是的,我也用 DotNetCoreCLI pack 命令测试过,我也没有听到其他关于这个问题的声音。所以,这个问题应该更多地与环境相关,比如项目文件。无论如何,我很高兴您已经通过解决方法解决了您的问题,请在解决问题之前将您的评论转换为答案。这对阅读此线程的其他社区成员可能是有益的。谢谢。
-
这是一种解决方法,但不是最终答案。 DotNetCoreCLI pack 命令应该适用于 .NET Core 3.1 项目......不应该使用 NuGetCommand。