在Visual Studio 2012中编写Nuget包控制台脚本

问题描述:

我们在开发中使用了定制的Nuget包。
这些软件包安装命令是通过解决方案的不同项目中的不同参数启动的。
手动,在控制台软件包管理器,该突未为如下:在Visual Studio 2012中编写Nuget包控制台脚本

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 ... 
.... 

在此先感谢您的帮助进行切换。
菲利普

+0

您运行的是什么样的命令?他们是否使用cmdlet或其他? – Eris

+0

这就是nuget命令。我的问题是真的要选择正确的项目 – PhilippeC

没有特定的命令,这是最好的,我可以这样做:

大多数的NuGet命令接受-ProjectName参数允许你指定要使用哪一个:

Install-Package -ProjectName MyProject.UnitTests -Id NUnit 

这些命令也有作为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 
     } 
} 
+0

感谢您的详细解答。但它假定我的命令支持-ProjectName开关,但情况并非如此......我仍在寻找一种方法来以编程方式更改PM控制台中的默认项目。 – PhilippeC