1

我们在 Visual Studio 2012 解决方案中使用了一些自定义脚手架以及一些内置脚手架(例如 Code First Migrations 命令)。然后我们在包管理器控制台中运行,使用 PowerShell 我们可以将它们组合成有用的功能,这些功能可以同时执行多项任务。

例如,我们有几个带有迁移的项目,我们希望为每个项目执行 Update-Database cmdlet,只编写一个命令。像这样的东西:

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

它工作得很好,但我们想要一个类似的命令

Update-All

这将做同样的事情,而无需键入前一件事。我们希望将它作为解决方案的一部分提供给所有开发人员,然后从源代码控制中获取。

任何想法如何做这种事情?

编辑: Keith Hill 关于使用 powershell 配置文件的建议效果很好。我也在考虑使用 Nuget 中的 Import-Module cmdlet。我实际上希望在管理项目中的可重用 cmdlet 时拥有非常流畅的工作流程。任何想法如何为解决方案执行导入模块?是否可以在不托管它的情况下编写自定义(私有)Nuget 包并让它执行将 Import-Module 的 init.ps?

4

1 回答 1

3

每个 PowerShell 都有自己的配置文件。您可以通过在 PM 控制台中运行以下命令来查看 NuGet 期望的配置文件的路径:

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 目录中。

于 2012-12-23T02:17:32.487 回答