我正在尝试创建一个PowerShell脚本来自动创建Nuget包并将其上传到本地Nuget源,但是我遇到了一些我不理解的PowerShell问题。
第一步是使用此命令创建所有包装:
Get-ChildItem -Include *.nuspec -Recurse | Foreach {nuget pack $_.fullname}
这将进入每个项目目录并递归查找.nuspec文件,并为每个文件构建.nupkg文件,并将其放在解决方案目录中。在本例中为“MultiPack.Client.1.0.0.nupkg”,“MultiPack.Common.1.0.0.nupkg”和“MultiPack.Server.1.0.0.nupkg”。它似乎工作得很好。
下一步是在每个文件上运行nuget add fileName.nupkg -Source "c:\localNuget"
。我将上一个命令修改为:
Get-ChildItem -Include *.nupkg | Foreach {nuget add $_.fullname -Source c:\localNuget}
但它似乎没有用。做一些调试,我发现即使文件肯定存在,Get-ChildItem -Include *.nupkg
也不会产生任何结果。如果我使用-Recurse
,它可以工作,但我真的不想这样做,因为.nupkg文件将始终位于当前目录中。
为什么不使用通配符查找我的文件,如何在没有-Recurse
标志的情况下更改脚本?
答案 0 :(得分:2)
如Tomalak所述
尝试-Filter而不是-Include
原因:
你需要一个“-Recurse”才能使用Include
-Include参数仅在命令包含时有效 -Recurse参数或路径指向目录的内容,例如C:\ Windows *,其中“*”通配符指定 C:\ Windows目录的内容。