2011-06-07 230 views
3

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

无论如何,不​​必记住所有这些,而是​​将它们全部放在脚本中,我所要做的就是运行它。但是,这是我第一次接触到PowerShell,我不知道如何做到这一点。

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

例如,

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

我已经做了谷歌搜索,找出更多,但我想我找错了地方。

回答

7

作为Fabrice已经建议,创建一个项目模板与所需的NuGet包,可能是我会采取的方法。要获得最新版本的NuGet软件包,您可以使用NuGet Package Updater软件包。这将绕过当前仅支持安装NuGet包的特定版本的项目模板。

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

在NuGet_profile.ps1中,您可以添加PowerShell函数,您可以从Visual Studio中的程序包管理器控制台窗口调用该函数。在调用函数之前,您需要重新启动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 
    } 
} 
与定义,你可以在运行程序包管理器控制台下面以ELMAH和SqlServerCompact安装到一个名为MyProject的项目,这些功能

现在。

Install-StandardPackages MyProject 

或者,你可以通过运行程序包管理器控制台下面在当前开放的解决方案安装ELMAH和SqlServerCompact到所有项目。

Install-StandardPackagesForAllProjects 

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

+0

谢谢,这个工程,我可以按照需要做什么。 – arame3333 2011-06-20 16:06:55

0

您的解决方案可能是创建一个您在本地存储库中托管的元nuget包。您可以创建一个nuget包,并在所有不同的包上有依赖关系,这些包可以用于特定的项目设置。所有你需要做的就是安装元软件包,它将依次安装所有的依赖项。

+0

我意识到我提出的解决方案存在问题。Nuget仅在一个包源中查找,这意味着元包需要在与依赖关系相同的位置发布。在这种情况下,这意味着您必须将软件包下载到本地软件包存储库。 – PHeiberg 2011-06-07 11:31:41

+0

我是新来的这种事情。你有什么好的链接,我可以看看? – arame3333 2011-06-07 12:39:29

+0

关于创建一个包,在这里描述:http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package。在本地共享上发布只是创建UNC文件共享并将nupkg文件放在那里,并在VS中设置指向文件共享的新包源。 – PHeiberg 2011-06-07 13:14:10

0

您可能想要创建自己的mvc3项目模板,您可以在其中指定首选的Nuget包。 要做到这一点,你应该看看菲尔哈克blog post

+0

有趣的方法 - 太糟糕了,它仅限于在本地打包并且必须指定确切的版本。希望它能在未来的版本中得到补救。 – PHeiberg 2011-06-08 07:23:55