簡體   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