【问题标题】:Scripting the Nuget Package Console inside Visual Studio 2012在 Visual Studio 2012 中编写 Nuget 包控制台脚本
【发布时间】:2013-11-20 10:37:53
【问题描述】:

我们在开发中使用自定义 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 ...
....

提前感谢您的帮助。
菲利普

【问题讨论】:

  • 你在运行什么样的命令?他们是 nuget cmdlet 还是其他?
  • 那是 nuget 命令。我的问题真的是选对项目

标签: powershell visual-studio-2012 nuget-package


【解决方案1】:

没有具体的命令,这是我能做的最好的:

大多数 nuget 命令采用 -ProjectName 参数,允许您指定使用哪一个:

Install-Package -ProjectName MyProject.UnitTests -Id NUnit

这些命令还具有 -Project 作为 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 
        } 
}

【讨论】:

  • 感谢您的详细解答。但它假设我的命令支持 -ProjectName 开关,但事实并非如此......我仍在寻找一种方法来以编程方式更改 PM 控制台中的默认项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 2010-09-07
  • 2015-01-21
  • 2015-02-21
  • 1970-01-01
相关资源
最近更新 更多