Powershell 在Visual Studio 2012中编写Nuget包控制台脚本
我们在开发中使用定制的Nuget包。 这些软件包安装命令在解决方案的不同项目中以不同参数启动。 在Console Package Manager中,手动执行以下过程:Powershell 在Visual Studio 2012中编写Nuget包控制台脚本,powershell,visual-studio-2012,nuget-package,Powershell,Visual Studio 2012,Nuget Package,我们在开发中使用定制的Nuget包。 这些软件包安装命令在解决方案的不同项目中以不同参数启动。 在Console Package Manager中,手动执行以下过程: PM> ==> Select default Project1 in the ComboBox PM> Run Command1 ParamA1 ParamB1 ... PM> ==> Select default Project1 in the ComboBox PM> Run C
PM> ==> Select default Project1 in the ComboBox
PM> Run Command1 ParamA1 ParamB1 ...
PM> ==> Select default Project1 in the ComboBox
PM> Run Command2 ParamA2 ParamB2 ...
Etc
对于每个项目
由于这些自定义包是正在进行的工作,它们会经常更新,我们必须在每个新版本中重新运行所有这些命令
这一手动过程繁琐且容易出错
我想为这个过程编写脚本。
我知道如何创建PowerShell脚本来发出命令,但我不知道如何在不同的项目之间切换
Script.ps1
# Select Project1 ??
Command1 ParamA1 ParamB1 ...
# Select Project2 ??
Command2 ParamA2 ParamB2 ...
....
提前谢谢你的帮助。
Philippe没有特定的命令,这是我能做的最好的事情: 大多数nuget命令都采用-ProjectName参数,允许您指定要使用的参数:
Install-Package -ProjectName MyProject.UnitTests -Id NUnit
这些命令还具有-Project as ValueFromPipeline和ValueFromPipelineProperty,因此以下命令可以工作:
Get-Project -All | Install-Package -Id NUnit
您还可以对其进行过滤:
Get-Project -All |
Where { $_.ProjectName -imatch "Test" } |
Install-Package -Id NUnit
或者,如果您想变得更复杂:
Get-Project -All |
Foreach-Object {
if (($_.Type -imatch "C#") -and ($_.ProjectName -imatch "Test")) {
Install-Package -Id NUnit -ProjectName $_.Project
}
}
您正在运行什么类型的命令?它们是nuget cmdlet还是其他?这是nuget命令。我的问题是选择正确的项目谢谢你的详细回答。但它假设我的命令支持-ProjectName开关,但事实并非如此。。。我仍然在寻找在PM控制台中以编程方式更改默认项目的方法。