尝试获取PowerShell脚本以运行nuget.exe命令

Pur*_*ome 3 powershell nuget

我正在尝试在PowerShell脚本中运行以下命令.

nuget pack MyNuGetSpec.nuspec -Version 1.2.3-alpha

当我有这个PS代码时,我收到一个错误..

码:

"NuGet packing $file to a .nupkg ..."
$exe = $path + "nuget.exe pack $file -Version $version"

$exe

&$exe
Run Code Online (Sandbox Code Playgroud)

和错误消息..

NuGet将MyNuGetSpec.nuspec打包到.nupkg ... C:\ Projects\Foo\NuGet包规范\nuget.exe包MyNuGetSpec.nuspec -Version 1.2.3-alpha&:术语'C:\ Projects\Foo\NuGet程序包规格\nuget.exe包MyNuGetSpec.nuspec -Version 1.2.3-alpha'未被识别为cmdlet,函数,脚本文件或可操作程序的名称.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试.在C:\ Projects\Foo\NuGet包规范\ build.ps1:106 char:10 +&$ exe + ~~~~ + CategoryInfo:ObjectNotFound:(C:\ Projects\Foo ... 0.1.0-alpha: String)[],ParentContainsErrorRecordException + FullyQualifiedErrorId:CommandNotFoundException

$path == Directory: C:\Projects\Foo\NuGet Package Specifications
$file == `MyNuGetSpec.nuspec`
$version == 0.1.0-alpha`
Run Code Online (Sandbox Code Playgroud)

最后,我将.exe与文件并排(在同一文件夹中).nuspec.

有人可以帮忙吗?

Mic*_*lli 6

您需要将可执行文件名与参数分开:

$exe = $path + "nuget.exe"

&$exe pack $file -Version $version
Run Code Online (Sandbox Code Playgroud)


Pun*_*ani 5

小改动

 $path="c:\..."
 $file= "MyNuGetSpec.nuspec"
 $version= "0.1.0-alpha"
 Invoke-Expression "$($path)\nuget.exe pack $($file) -Version $($version)"
Run Code Online (Sandbox Code Playgroud)

这应该使用适当的参数执行nuget.exe

  • 使用`&`时,参数按原样传递。在这种情况下使用Invoke-Expression时,它将首先生成完整的字符串,然后将该字符串评估为powershell代码。“&”命令更安全,因为它只会扩展“ $ exe”。当使用`Invoke-Expression`时,如果`$ file`具有分号和第二个命令,则您会遇到问题。 (2认同)