gpt4 book ai didi

shell - 如何使用具有多个文件名的 shell 脚本执行 VSTest.Console.exe

转载 作者:行者123 更新时间:2023-12-01 09:49:46 27 4
gpt4 key购买 nike

我有一个文件夹,里面有一些包含单词“Tests”作为文件名的 dll

e.g "C:\Api\Myfile.Tests.dll"

我需要获取其中包含名称“Tests”的那些文件,并使用 power shell 脚本将文件作为文件传递给 VSTest.Console.exe。

我的代码是

$DirectoryName = "C:\api";
$Parameters = "";

Get-ChildItem $DirectoryName -Filter "*Tests*" | ForEach-Object {
$Parameters = $Parameters + $DirectoryName + "\" + $_ ;
}

$TestRunner = "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe";

$Parameters;

# & $TestRunner "C:\api\Base.Tests.dll" "C:\api\Model.Tests.dll";

& $TestRunner $Parameters;

$Parameters 给出了所有包含“Tests”的文件名。形成的字符串带有空格,如

C:\api\Base.Tests.dll C:\api\Model.Tests.dll

但是脚本还是不行。我猜它被视为单一路径,因为它在一个 sting 变量中。如果是这样,那么如何解决这个问题。

最佳答案

希望这可以节省一些时间...但是由于我的可执行路径包含空格,我遇到了很多麻烦...

因此,我必须将我的命令格式化为字符串。请注意转义的“&”和转义引号。显然,带空格的命令需要包含“&”...我也尝试通过“&”直接调用它...但是,它去掉了 dll 参数列表的双引号并在整个困惑中加上引号这不是 vsTest.Console.exe 所期望的...无论如何,这是对我有用的解决方案...

Function Get-AllTestDllsAsQuotedStrings {
$parameters = ""

Get-ChildItem `
-Path "C:\code\git\YourProject\Source" `
-File `
-Recurse `
-Filter *.dll |
where-object FullName -Like *bin\debug\*test*.dll |
ForEach-Object {
$parameters = $parameters + "`"" + $_.FullName + "`" ";
}

return $parameters
}



$vsTestConsoleExe = "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"

$command = "`& `"$vsTestConsoleExe`" $(Get-AllTestDllsAsQuotedStrings)"

write-host $command

invoke-expression $command

关于shell - 如何使用具有多个文件名的 shell 脚本执行 VSTest.Console.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37123662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com