Powershell nuget push失败,没有错误



我昨天开始使用powershell,与批处理相比,它是多么容易,这让我感到惊讶。我能够解决大多数问题与一点点搜索谷歌,但在这个特殊的情况下,我只是没有得到任何错误信息的工作。

这是正在讨论的脚本:

https://github.com/taori/AjaxHub/blob/master/build/executePackaging.ps1

$apiKey = [IO.File]::ReadAllText("publish.apiKey.txt")
foreach ($package in $packages){
    [xml]$xml = Get-Content($package + ".nuspec")
    $version = $xml.package.metadata.version;
    "Setting up packacking for $package $version"
    $packagePath = ".packages$package$version";
    If(Test-Path $packagePath){
        Remove-Item -Recurse -Force $packagePath
    }
    md -Force $packagePath
    $packArguments = "pack -Symbols -Version $version $package.nuspec -OutputDirectory $packagePath";
    "Packaging with Nuget.exe $packArguments"
    Start-Process -FilePath ".Nuget.exe" -WindowStyle Hidden -ArgumentList $packArguments -ErrorAction Stop

    $pushArguments = "push $packagePath$package.$version.symbols.nupkg $apiKey"
    "Pushing with Nuget.exe $pushArguments"
    Start-Process -FilePath ".Nuget.exe" -WindowStyle Hidden -ArgumentList $pushArguments -ErrorAction Stop
    Start-Process -FilePath "https://www.nuget.org/packages/$package"
}
Read-Host -Prompt "Script done. Press <enter>"

只有推送部分不工作(至少nuget.org上没有更新)或产生任何错误。有人知道如何使它工作或抛出错误,我可以工作?

我的推送尝试出现了多个问题。我不知道为什么我没有得到任何错误的普通调用,但这有助于我显示它们:

Invoke-Expression "$nugetPath $pushArguments" -ErrorVariable $pushOutput
"pushOutput: $pushOutput";
有很多方法可以尝试从cli调用中捕获错误,但这个方法似乎是最简单的(并且似乎可以处理异步调用错误)。不幸的是,Tree先生的建议没有奏效。我也尝试过带有"2>&1"的版本,但那只指出语法错误/什么也没返回。

我遇到的问题如下:

  • i didn ' t apply -Wait on the pack command
  • 因为我没有这样做,所以包进程异步关闭
  • 我的推送尝试发生在打包过程完成之前->文件未找到(我假设我没有得到错误,因为我的推送也是异步的)
  • dns解析偶尔失败

没有错误的脚本状态:

$packages = @("AjaxHub.Core","AjaxHub.MVC5")
$apiKey = [IO.File]::ReadAllText("publish.apiKey.txt")
$nugetPath = ".Nuget.exe";
Resolve-DnsName "www.nuget.org" -ErrorAction Stop | Out-Null
Resolve-DnsName "www.symbolsource.org" -ErrorAction Stop | Out-Null
foreach ($package in $packages){
    [xml]$xml = Get-Content($package + ".nuspec")
    $version = $xml.package.metadata.version;
    "Setting up packacking for $package $version"
    $packagePath = ".packages$package$version";
    If(Test-Path $packagePath){
        Remove-Item -Recurse -Force $packagePath
    }
    md -Force $packagePath | Out-Null
    # todo add sources for -Symbols pack process
    #$packArguments = "pack -Symbols -Version $version $package.nuspec -OutputDirectory $packagePath";
    $packArguments = "pack -Version $version $package.nuspec -OutputDirectory $packagePath";
    "Packaging with Nuget.exe $packArguments"
    Start-Process -FilePath $nugetPath -WindowStyle Hidden -ArgumentList $packArguments -ErrorAction Stop -Wait
    $pushArguments = "push $packagePath$package.$version.nupkg -ApiKey $apiKey -Timeout 60 -Verbosity normal"
    "Pushing with Nuget.exe $pushArguments" 
    Start-Process -FilePath $nugetPath -WindowStyle Hidden -ArgumentList $pushArguments -ErrorAction Stop -Wait
    Start-Process -FilePath "https://www.nuget.org/packages/$package"   
    "";
    "";
}
Read-Host -Prompt "Script done. Press <enter>"

最新更新