閱讀英文

共用方式為


NuGet 2.5 版本資訊

NuGet 2.2.1 版本資訊 | NuGet 2.6 版本資訊

NuGet 2.5 於 2013 年 4 月 25 日發行。 這個版本太大了,我們覺得必須略過 2.3 版和 2.4 版! 到目前為止,這是我們針對 NuGet 所擁有的最大版本,在版本中已超過 [160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all) 版本。

致謝

我們想要感謝下列外部參與者對 NuGet 2.5 的重大貢獻:

  1. [Daniel Plaisted](https://www.codeplex.com/site/users/view/dsplaisted)@dsplaisted
    • [#2847](https://nuget.codeplex.com/workitem/2847) - 將MonoAndroid、MonoTouch和MonoMac新增至已知的目標架構標識符清單。
  2. [Andres G. Aragoneses](https://www.codeplex.com/site/users/view/knocte)@knocte
    • [#2865](https://nuget.codeplex.com/workitem/2865)- 修正區分大小寫OS的拼字NuGet.targets
  3. [David Fowler](https://www.codeplex.com/site/users/view/dfowler)@davidfowl
    • 讓解決方案建置在Mono上。
  4. [Andrew Theken](https://www.codeplex.com/site/users/view/atheken)@atheken
    • 修正Mono上的單元測試失敗。
  5. [Olivier Dagenais](https://www.codeplex.com/site/users/view/OliIsCool)@OliIsCool
    • [#2920](https://nuget.codeplex.com/workitem/2920) - nuget.exe pack 命令不會將屬性傳播至 MSBuild
  6. [Miroslav Bajtos](https://www.codeplex.com/site/users/view/MiroslavBajtos)@bajtos
    • [#1511](https://nuget.codeplex.com/workitem/1511) - 修改的 XML 處理程式碼以保留格式。
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)@adamralph
    • 已將辨識字新增至自定義字典,以允許build.cmd成功。
  8. [Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
    • 修正在當地語系化 VS 中執行時的單元測試。
  9. [Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
    • 從 PackageService 擷取的介面
  10. [Maxime Brugidou](https://www.codeplex.com/site/users/view/brugidou)@brugidou
    • [#936](https://nuget.codeplex.com/workitem/936) - 封裝時處理專案相依性
  11. [Xavier Decoster](https://www.codeplex.com/site/users/view/XavierDecoster)@XavierDecoster
    • [#2991](https://nuget.codeplex.com/workitem/2991)[#3164](https://nuget.codeplex.com/workitem/3164) - 在 nuget.cofig 檔案中儲存套件來源認證時支援純文字密碼
  12. [James Manning](http://www.codeplex.com/site/users/view/jmanning)@manningj
    • [#3190](http://nuget.codeplex.com/workitem/3190)[#3191](https://nuget.codeplex.com/workitem/3191) - 修正 Get-Package 說明描述

我們也讚賞下列人員尋找 NuGet 2.5 Beta/RC 在最終版本之前核准和修正的 Bug:

  1. [Tony Wall](https://www.codeplex.com/site/users/view/CodeChief)@CodeChief
    • [#3200](https://nuget.codeplex.com/workitem/3200) - 使用最新的 NuGet 2.4 和 2.5 組建中斷 MSTest

版本中值得注意的功能

允許使用者覆寫已經存在的內容檔案

一直要求最多的功能之一,就是能夠覆寫 NuGet 套件中已存在於磁碟上的內容檔案。 從 NuGet 2.5 開始,系統會識別這些衝突,系統會提示您覆寫檔案,而先前一律會略過這些檔案。

Overwrite content files

'nuget.exe update' 和 'Install-Package' 現在都有新的選項 '-FileConflictAction' 來設定命令行案例的一些預設值。

當目標專案中已有來自封裝的檔案時,請設定預設動作。 設定為 [覆寫] 以一律覆寫檔案。 設定為 [忽略] 以略過檔案。 如果未指定,則會提示每個衝突的檔案。

自動匯入 MSBuild 目標和 props 檔案

NuGet 套件的最上層已建立新的傳統資料夾。 身為 、 \content\tools的對等互連\lib,您現在可以在\build套件中包含資料夾。 在這裡資料夾下,您可以放置兩個具有固定名稱的檔案, {packageid}.targets{packageid}.props。 這兩個檔案可以直接位於 build 或架構特定資料夾之下,就像其他資料夾一樣。 挑選最相符架構資料夾的規則與那些資料夾完全相同。

當 NuGet 安裝含有 \build 檔案的套件時,它會在指向 .targets.props 檔案的項目檔中新增 MSBuild <Import> 元素。 檔案 .props 會新增在頂端,而 .targets 檔案會新增至底部。

使用 <References/> 元素為每個平臺指定不同的參考

在 2.5 之前,在 檔案中 .nuspec ,使用者只能指定要針對所有架構新增的參考檔案。 現在,在 2.5 中使用這項新功能,使用者可以為每個支援的平臺撰寫 <reference/> 元素,例如:

<references>
    <group targetFramework="net45">
        <reference file="a.dll" />
    </group>
    <group targetFramework="netcore45">
        <reference file="b.dll" />
    </group>
    <group>
        <reference file="c.dll" />
    </group>
</references>

以下是 NuGet 如何根據檔案新增項目參考的 .nuspec 流程:

  1. lib尋找適合目標架構的資料夾,並從該資料夾取得元件清單
  2. 個別尋找適用於目標架構的參考群組,並從該群組取得元件清單。 沒有指定目標架構的參考群組是後援群組。
  3. 尋找兩個清單的交集,並使用該交集做為要新增的參考

這項新功能可讓套件作者使用參考功能,將元件子集套用至不同的架構,否則它們需要將重複的元件裝載於多個 lib 資料夾中。

注意:您目前必須使用nuget.exe套件來使用此功能;NuGet 套件總管尚未支援它。

[全部更新] 按鈕以允許一次更新所有套件

許多您都知道「Update-Package」PowerShell Cmdlet,以更新所有套件;現在還有一個簡單的方式可以透過UI來執行此動作。

若要試用這項功能:

  1. 建立新的 ASP.NET MVC 應用程式
  2. 啟動 [管理 NuGet 套件] 對話框
  3. 選取 [更新]
  4. 按兩下 [全部更新] 按鈕

Update All button in the dialog

已改善 nuget.exe Pack 的項目參考支援

現在nuget.exe pack 命令會使用下列規則來處理參考的專案:

  1. 如果參考的項目有對應的.nuspec檔案,例如,在與 相同的資料夾中proj1.csproj有一個稱為 proj1.nuspec 的檔案,則會使用從檔案讀取的標識碼和版本,將此專案新增為套件的.nuspec相依性。
  2. 否則,參考項目的檔案會配套到封裝中。 然後,此專案所參考的專案會以遞歸方式使用相同規則來處理。
  3. 所有 DLL、 .pdb、 和 .exe 檔案都會新增。
  4. 會新增所有其他內容檔案。
  5. 所有相依性都會合併。

這可讓參考的專案在有檔案時被視為相依性,否則它會成為封裝的一 .nuspec 部分。

如需詳細資訊,請參閱: [http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936)

將 「最低 NuGet 版本」屬性新增至套件

名為 『minClientVersion』 的新元數據屬性現在可以指出取用套件所需的最小 NuGet 用戶端版本。

這項功能可協助套件作者指定套件只能在特定版本的 NuGet 之後運作。 .nuspec在 NuGet 2.5 之後新增新功能時,套件將能夠宣告最低 NuGet 版本。

<metadata minClientVersion="2.6">

如果使用者已安裝 NuGet 2.5,且套件識別為需要 2.6,則會向使用者提供視覺提示,指出套件無法安裝。 然後,系統會引導使用者更新其 NuGet 版本。

這會改善套件開始安裝但失敗的現有體驗,指出識別無法辨識的架構版本。

在套件安裝期間,不再不必要地更新相依性

在 NuGet 2.5 之前,當安裝相依於專案中已安裝之套件的套件時,即使現有版本符合相依性,相依性也會更新為新安裝的一部分。

從 NuGet 2.5 開始,如果相依性版本已經滿足,相依性將不會在其他套件安裝期間更新。

案例:

  1. 來源存放庫包含 1.0.0 版和 1.0.2 版的套件 B。 它也包含套件 A,其相依於 B (>= 1.0.0)。
  2. 假設目前的專案已安裝套件 B 1.0.0 版。 現在您要安裝套件 A。

在 NuGet 2.2 和較舊版本中:

  • 安裝套件 A 時,NuGet 會將 B 自動更新為 1.0.2,即使現有的 1.0.0 版已經滿足相依性版本條件約束,也就是 >= 1.0.0。

在 NuGet 2.5 和更新的中:

  • NuGet 將不再更新 B,因為它偵測到現有的 1.0.0 版符合相依性版本條件約束。

如您變更的相關背景,請閱讀詳細 [work item](https://nuget.codeplex.com/workitem/1681) 與相關的 [discussion thread](https://nuget.codeplex.com/discussions/436712)

nuget.exe輸出具有詳細詳細信息的 HTTP 要求

如果您要針對nuget.exe進行疑難解答,或只是好奇作業期間所做出的 HTTP 要求,『-verbosity detailed』 參數現在會輸出所有 HTTP 要求。

HTTP output from nuget.exe

nuget.exe推送現在支援 UNC 和資料夾來源

在 NuGet 2.5 之前,如果您嘗試根據 UNC 路徑或本機資料夾,將 'nuget.exe push' 執行至套件來源,推送將會失敗。 使用最近新增的階層式組態功能,nuget.exe需要以 UNC/資料夾來源或 HTTP 為基礎的 NuGet 資源庫為目標變得很常見。

從 NuGet 2.5 開始,如果nuget.exe識別 UNC/資料夾來源,它會執行檔案複製到來源。

下列命令現在可運作:

nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg

nuget.exe支持明確指定的組態檔

nuget.exe存取組態的命令(除了 'spec' 和 'pack' 以外的所有命令現在都支援新的 '-ConfigFile' 選項,這會強制使用特定的組態檔取代 %AppData%\nuget\Nuget.Config 的默認組態檔。

範例:

nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config

原生項目的支援

使用 NuGet 2.5 時,NuGet 工具現在適用於 Visual Studio 中的原生專案。 我們預期大部分的原生套件都會使用上述 MSBuild 匯入功能,並使用 CoApp 專案建立的工具。 如需詳細資訊,請參閱 coapp.org 網站上的工具 詳細數據。

當套件安裝到原生專案時,會引進「原生」的目標架構名稱,以在 \build、\content 和 \tools 中包含檔案。 'lib' 資料夾不會用於原生專案。