用于安装nuget包的PowerShell脚本

ara*_*333 3 .net powershell nuget

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

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

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

例如,

Install-Package SqlServerCompact -Project MileageStats.Data.SqlCe
Install-Package SqlServerCompact -Project MileageStats.Data.SqlCe.tests
Run Code Online (Sandbox Code Playgroud)

我已经进行了Google搜索以了解更多内容,但我认为我正在寻找错误的地方.

Mat*_*ard 7

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

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

在NuGet_profile.ps1中,您可以添加PowerShell函数,您可以从Visual Studio中的Package Manager控制台窗口调用这些函数.在调用函数之前,您需要重新启动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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Install-StandardPackages MyProject
Run Code Online (Sandbox Code Playgroud)

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

Install-StandardPackagesForAllProjects
Run Code Online (Sandbox Code Playgroud)

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