2012-12-22 36 views
1

我們在Visual Studio 2012解決方案以及一些內置的腳本中使用了一些自定義腳手架(例如Code First Migrations命令)。我們在包管理器控制檯中運行,然後使用PowerShell,我們可以將它們組合成有用的功能,從而執行幾項任務。如何在Visual Studio解決方案中創建可重用的PowerShell功能

例如,我們有幾個使用Migrations的項目,我們希望爲每個項目執行Update-Database cmdlet,只寫一條命令。類似的東西:

"Project1", "Project2", "Project3", "Project4" | ForEach-Object {Update-Database -StartUpProjectName $_ -ProjectName $_} 

它工作得很好,但我們希望能有像

Update-All 

的命令會做同樣的,而不需要輸入以前的事情。我們希望所有開發人員都可以使用它,作爲解決方案的一部分,然後從源代碼控制中獲得。

任何想法如何做這種事情?

編輯: Keith Hill關於使用PowerShell配置文件的建議很有用。我也在使用Nuget中的Import-Module cmdlet。我希望在項目中實際上擁有非常流暢的管理可重用cmdlet的工作流程。任何想法如何讓解決方案執行導入模塊?它可以編寫一個自定義(私人)Nuget包而無需託管它,並讓它執行將導入模塊的init.ps?

+0

你能否加入一些信息?不熟悉VS及其cmdlet。 Update-Database是VS-cmdlet還是第三方?什麼目錄是從包管理器控制檯運行的命令? –

回答

3

每個PowerShell都有自己的配置文件。您可以看到該的NuGet希望通過在控制檯PM運行此命令的配置文件路徑:

PM> $profile 
C:\Users\Keith\Documents\WindowsPowerShell\NuGet_profile.ps1 

編輯這個文件,例如添加功能

function Update-All { 
    "Project1", "Project2", "Project3", "Project4" | 
     ForEach-Object {Update-Database -StartUpProjectName $_ -ProjectName $_} 
} 

下一次啓動Visual Studio,該函數將在您的PM控制檯中可用。 您可以根據需要參數化該功能。您可以將此配置文件放在源代碼管理中,但每個開發人員都需要將其複製到Documents \ WindowsPowerShell目錄中。

+0

非常好的提示謝謝基思,它的工作原理!我想要深入一點。在帖子中看到我的評論 –

相關問題