正在尝试获取PowerShell脚本以运行nuget.exe命令
我正在尝试在PowerShell脚本中运行以下命令正在尝试获取PowerShell脚本以运行nuget.exe命令,powershell,nuget,Powershell,Nuget,我正在尝试在PowerShell脚本中运行以下命令 nuget pack MyNuGetSpec.nuspec-版本1.2.3-alpha 当我有这个PS代码时,我得到一个错误 代码: 以及错误消息 NuGet正在将MyNuGetSpec.nuspec打包到a.nupkg。。。C:\Projects\Foo\NuGet 包规范\nuget.exe包MyNuGetSpec.nuspec-版本 1.2.3-alpha&:术语“C:\Projects\Foo\NuGet Package Specifi
nuget pack MyNuGetSpec.nuspec-版本1.2.3-alpha
当我有这个PS代码时,我得到一个错误
代码:
以及错误消息
NuGet正在将MyNuGetSpec.nuspec打包到a.nupkg。。。C:\Projects\Foo\NuGet
包规范\nuget.exe包MyNuGetSpec.nuspec-版本
1.2.3-alpha&:术语“C:\Projects\Foo\NuGet Package Specifications\NuGet.exe pack MyNuGetSpec.nuspec-版本1.2.3-alpha”
无法识别为cmdlet、函数、脚本文件或的名称
可操作程序。检查名称的拼写或路径是否正确
包括,请验证路径是否正确,然后重试。在
C:\Projects\Foo\NuGet包规范\build.ps1:106字符:10
+&$exe
+ ~~~~
+CategoryInfo:ObjectNotFound:(C:\Projects\Foo…0.1.0-alpha:String)[],ParentContainerRorRecordException
+FullyQualifiedErrorId:CommandNotFoundException
最后,我将.exe与
.nuspec
文件并列(在同一文件夹中)。您需要将可执行文件名与参数分开:
$exe = $path + "nuget.exe"
&$exe pack $file -Version $version
轻微改动
$path="c:\..."
$file= "MyNuGetSpec.nuspec"
$version= "0.1.0-alpha"
Invoke-Expression "$($path)\nuget.exe pack $($file) -Version $($version)"
这应该使用适当的参数执行nuget.exe这与@mickyBalladelli的答案有何不同?使用
&
时,参数按原样单独传递。在本例中使用Invoke Expression
时,它将首先生成完整字符串,然后将该字符串作为powershell代码进行求值。&
命令更安全,因为它只会扩展$exe
。使用Invoke Expression
时,如果$file
有分号和第二个命令,则会出现问题。
$exe = $path + "nuget.exe"
&$exe pack $file -Version $version
$path="c:\..."
$file= "MyNuGetSpec.nuspec"
$version= "0.1.0-alpha"
Invoke-Expression "$($path)\nuget.exe pack $($file) -Version $($version)"