9

我正在尝试从 powershell 执行 Visual Studio 的工具 MSTest,但没有成功:

$testDLL = "myTest.dll"
$mstestPath = "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe"    
$arguments = " /testcontainer:" + $testDLL + " /test:UnitTest1"

Invoke-Expression "$mstestPath $arguments"

我收到此错误:“术语 'x86' 未被识别为 cmdlet、函数的名称,......”有什么想法吗?谢谢。

编辑:

好的,使用“&”而不是“Invoke-Expression”解决了问题,并为每个参数创建了单独的变量,它不适用于我只在一个 var 中使用两者:

$testDLL = "myTest.dll"
$mstestPath = "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe"    
$argument1 = "/testcontainer:" + $testDLL
$argument2 = "/test:UnitTest1"

& $mstestPath $argument1 
4

1 回答 1

9

我建议&在这种情况下使用运算符(请参阅评论 David Brabant)。

但是,如果您必须使用 Invoke-Expression,您可以转换$mstestPath为其等效的短路径。

$testDLL = "myTest.dll"
$fs = New-Object -ComObject Scripting.FileSystemObject
$f = $fs.GetFile("C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe")
$mstestPath = $f.shortpath   
$arguments = " /testcontainer:" + $testDLL + " /test:UnitTest1"
Invoke-Expression "$mstestPath $arguments"
于 2013-06-04T10:53:45.367 回答