发布 Nuget 无法将参数绑定到参数 'Path'

Release Nuget cannot bind argument to parameter 'Path'

我正在使用 Visual Studio 团队服务。问题在于包含 NuGet Publisher 任务的 Release 定义。我有确切的 NuGet Publisher 配置在构建配置中运行良好,所以我得到的印象是在 Release 上将它设置为 运行 还有更多。错误是:

Starting task: NuGet Publisher     
Set workingFolder to default: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\default\tasks\NuGetPublisher[=11=].1.39
Executing the powershell script: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\default\tasks\NuGetPublisher[=11=].1.39\NuGetPublisher.ps1
##[error]Cannot bind argument to parameter 'Path' because it is null.
##[error]Cannot bind argument to parameter 'Path' because it is null.
Check/Set nuget path

我的构建配置文件中存在与发布配置文件中相同的环境变量。在 Release 配置文件中,只有 Nuget Publish 步骤,没有 Packager 步骤。这个 'path' 变量是否需要来自 packager/compile 步骤?我不认为会有那样的相互依赖关系。

您可以通过简单地使用 Visual Studio 模板创建一个新版本来重现它。然后在 'Artifacts' 步骤之前添加 NuGet Packager 和 NuGet Publisher 步骤。我喜欢将我的 nupkg 输出到 $(BuildConfiguration) 目录以保持一致。这 运行 很好。

接下来,禁用发布步骤。然后使用空模板制作发布配置文件。添加 NuGet 发布者步骤。 Link到上一步Build配置的神器源,然后release。这将导致错误。

问题出在 "Nuget Publisher" 任务中。它在 PowerShell 脚本中使用 "AGENT_BUILDDIRECTORY" 变量,而此变量适用于 "Build" 但不适用于 "Release"。因此 "Release" 中的值为 null。您可以在此页面提交用户声音:http://visualstudio.uservoice.com/forums/330519-team-services.

目前,如果您正在为 "Release" 使用 your own build agent,您可以转到构建代理工作文件夹 "agent\tasks\NuGetPublisher[=31=].1.39\"。更新 "VsoNuGetHelper.ps1" 中的打击线: 来自:

$nuGetTempDirectory = Join-Path $Env:AGENT_BUILDDIRECTORY "NuGet\"

收件人:

$nuGetTempDirectory = Join-Path $Env:SYSTEM_DEFAULTWORKINGDIRECTORY "NuGet\"

通过此更改,发布将成功完成,不会出现任何错误。

如果您使用 Hosted Build 代理,您可以创建一个 PowerShell 脚本并将其添加到您的发布定义中以发布 nuget 包。具体可以参考这段代码:https://github.com/Microsoft/vso-agent-tasks/blob/master/Tasks/NugetPublisher/NuGetPublisher.ps1

最近部署的 Team Services 已解决此问题。