Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 在Visual Studio 2012中编写Nuget包控制台脚本_Powershell_Visual Studio 2012_Nuget Package - Fatal编程技术网

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

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

我们在开发中使用定制的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 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控制台中以编程方式更改默认项目的方法。