发布 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 已解决此问题。
我正在使用 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 已解决此问题。