繁体   English   中英

PowerShell 脚本安装 nuget 包

[英]PowerShell scripts to install nuget packages

每当我开始一个项目时,我都想安装 NuGet 包 Elmah、Glimpse、MvcScaffolding、Squishit 和... - 这些是我所知道的。 也许我也应该安装其他人?

无论如何,不必记住所有这些,将所有这些都放在一个脚本中会很好,我所要做的就是运行它。 然而,这是我第一次接触到 PowerShell,我不知道该怎么做。

我看过一个示例项目,脚本看起来很简单,但我很困惑为什么需要安装带有 .test 后缀的 package? 为什么还有 -Project 参数?

例如,

Install-Package SqlServerCompact -Project MileageStats.Data.SqlCe
Install-Package SqlServerCompact -Project MileageStats.Data.SqlCe.tests

我已经进行了谷歌搜索以了解更多信息,但我认为我在寻找错误的地方。

正如 Fabrice 已经建议的那样,使用所需的 NuGet 包创建项目模板可能是我会采用的方法。 要获取最新版本的 NuGet 软件包,您可以使用NuGet Package 更新程序ZEFE90A8E604A3A7C840E8ZF0。 这将绕过目前仅支持安装特定版本的 NuGet package 的项目模板。

或者,您可以在NuGet 配置文件中存储有用的 PowerShell 脚本。 %UserProfile%\Documents\WindowsPowerShell目录中创建一个名为NuGet_profile.ps1的文件(例如 C:\Users[YourUserName]\Documents\WindowsPowerShell\NuGet_profile.ps1)。

在 NuGet_profile.ps1 中,您可以添加 PowerShell 函数,您可以从 Visual Studio 中的 Package 管理器控制台 window 调用这些函数。 在调用这些函数之前,您需要重新启动 Visual Studio。 下面显示了一个示例 NuGet_profile.ps1 文件。

function Install-StandardPackages {
    param(
        [Parameter(position=0, mandatory=$true)]
        [string]$projectName
    )

    Install-Package elmah -ProjectName $projectName
    Install-Package SqlServerCompact -ProjectName $projectName
}

function Install-StandardPackagesForAllProjects {
    foreach ($project in Get-Project -all) {
        Install-StandardPackages $project.Name
    }
}

现在定义了这些函数,您可以在 Package 管理器控制台中运行以下命令,将 elmah 和 SqlServerCompact 安装到名为 MyProject 的项目中。

Install-StandardPackages MyProject

或者,您可以通过在 Package 管理器控制台中运行以下命令,将 elmah 和 SqlServerCompact 安装到当前打开的解决方案中的所有项目中。

Install-StandardPackagesForAllProjects

Install-Package 命令中的 -ProjectName 参数用于指定 package 将安装到的项目的名称。 测试后缀看起来像是包含单元测试的项目名称的一部分。

您的解决方案可能是创建您在本地存储库中托管的元 nuget package。 您创建一个 nuget package ,其中依赖于您希望为特定项目设置拥有的所有不同包。 您所要做的就是安装 meta package,然后它会安装所有依赖项。

您可能想要创建自己的 mvc3 项目模板,您可以在其中指定首选的 Nuget 包。 为此,您应该查看 Phil Haack 博客文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM