2011-06-07 274 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