閱讀英文

共用方式為


NuGet 2.1 版本資訊

NuGet 2.0 版本資訊 | NuGet 2.2 版本資訊

NuGet 2.1 於 2012 年 10 月 4 日發行。

階層式 Nuget.Config

NuGet 2.1 可讓您透過遞歸方式逐步執行尋找檔案的資料夾結構 NuGet.Config ,然後從所有找到的檔案集建置組態,讓您更彈性地控制 NuGet 設定。 例如,假設小組有內部套件存放庫供其他內部相依性建置的 CI 建置。 個別項目的資料夾結構可能如下所示:

C:\
C:\myteam\
C:\myteam\solution1
C:\myteam\solution1\project1

此外,如果解決方案已啟用套件還原,則也會有下列資料夾:

C:\myteam\solution1\.nuget

為了讓小組的內部套件存放庫可供小組運作的所有專案使用,同時無法提供給計算機上的每個專案使用,我們可以建立新的 Nuget.Config 檔案,並將它放在 c:\myteam 資料夾中。 無法為每個專案指定 packages 資料夾。

<configuration>
    <packageSources>
    <add key="Official project team source" value="http://teamserver/api/v2/" />
    </packageSources>
    <disabledPackageSources />
    <activePackageSource>
    <add key="Official project team source" value="http://teamserver/api/v2/" />
    </activePackageSource>
</configuration>

我們現在可以從 c:\myteam 下的任何資料夾執行 'nuget.exe sources' 命令來查看來源已新增,如下所示:

Package sources from parent nuget config

NuGet.Config 檔案會依下列順序搜尋:

  1. .nuget\Nuget.Config
  2. 從專案資料夾到根目錄的遞歸逐步解說
  3. 全球 Nuget.Config%appdata%\NuGet\Nuget.Config

設定會以反向順序套用 ,這表示根據上述順序,會先套用全域 Nuget.Config,後面接著從根目錄到專案資料夾的探索到 Nuget.Config 檔案,後面接著 .nuget\Nuget.Config。 如果您使用 <clear/> 元素從組態中移除一組專案,這特別重要。

指定 『packages』 資料夾位置

過去,NuGet 已從解決方案根資料夾下方找到的已知 'packages' 資料夾管理解決方案的套件。 對於已安裝 NuGet 套件許多不同的解決方案的開發小組,這可能會導致在檔案系統上許多不同位置安裝相同的套件。

NuGet 2.1 可透過 repositoryPath 檔案中的 NuGet.Config 元素,更細微地控制 packages 資料夾的位置。 以先前的階層式 Nuget.Config 支援範例為基礎,假設我們想要讓 C:\myteam\ 下的所有項目共用相同的 packages 資料夾。 若要達成此目的,只要將下列專案新增至 c:\myteam\Nuget.Config即可。

<configuration>
    <config>
    <add key="repositoryPath" value="C:\myteam\teampackages" />
    </config>
    ...
</configuration>

在此範例中,共用 Nuget.Config 檔案會針對在 C:\myteam 底下建立的每個專案指定共用套件資料夾,而不論深度為何。 請注意,如果您的方案根目錄下有現有的 packages 資料夾,您必須先刪除它,NuGet 才會將套件放在新的位置。

可攜式連結庫的支援

可攜式連結庫是 .NET 4 首次推出的功能,可讓您建置可在不同 Microsoft 平臺上運作的元件,從 the.NET Framework 版本到 Silverlight 到 Windows 電話 甚至 Xbox 360(雖然目前,NuGet 不支援 Xbox 可攜式連結庫目標)。 藉由擴充架構版本和配置檔的 套件慣例 ,NuGet 2.1 現在可讓您建立具有復合架構和配置檔目標 lib 資料夾的套件,以支援可攜式連結庫。

例如,請考慮下列可攜式類別庫的可用目標平臺。

Portable library creation dialog

建置連結庫並執行 命令 nuget.exe pack MyPortableProject.csproj 之後,即可查看新的可攜式連結庫套件資料夾結構,方法是檢查產生的 NuGet 套件內容。

Portable library package layout

如您所見,可攜式連結庫文件夾名稱慣例遵循模式 'portable-{framework 1}+{framework n}',其中架構標識符遵循現有的 架構名稱和版本慣例。 在用於 Windows 電話 的架構識別碼中找到名稱和版本慣例的一個例外狀況。 此 Moniker 應該使用架構名稱 『wp』 (wp7、wp71 或 wp8)。 例如,使用 'silverlight-wp7' 會導致錯誤。

安裝從這個資料夾結構建立的套件時,NuGet 現在可以將其架構和配置檔規則套用至多個目標,如資料夾名稱中所指定。 NuGet 比對規則背後的原則是「更具體」的目標優先於「較不特定的」目標。 這表示目標為特定平臺的Moniker一律優先於可攜式平臺,如果兩者都與專案相容。 此外,如果多個可攜式目標與專案相容,NuGet 會偏好支援的平臺集「最接近」參考套件的專案。

以 Windows 8 和 Windows 電話 8 項目為目標

除了新增針對可攜式連結庫項目的支援之外,NuGet 2.1 還會為 Windows 8 市集和 Windows 電話 8 專案提供新的架構 Moniker,以及 Windows 市集和 Windows 電話 專案的一些新一般 Moniker,這些專案在未來版本的個別平臺中更容易管理。

針對 Windows 8 市集應用程式,識別碼如下所示:

NuGet 2.0 和更早版本 NuGet 2.1
winRT45, 。NETCore45 Windows, Windows8, win, win8

針對 Windows 電話 項目,識別符如下所示:
電話 OS NuGet 2.0 和更早版本 NuGet 2.1
Windows Phone 7 silverlight3-wp wp、wp7、Windows 電話、Windows 電話 7
Windows 電話 7.5 (芒果) silverlight4-wp71 wp71、Windows 電話 71
Windows Phone 8 (不支援) wp8、Windows 電話 8

在上述所有變更中,NuGet 2.1 將繼續完全支援舊的架構名稱。 接下來,應該使用新名稱,因為它們在未來版本的個別平臺中會更加穩定。 不過,在 2.1 之前的 NuGet 版本中,新名稱將會支援 *not* ,因此請據以規劃何時進行切換。

改善 [封裝管理員] 對話框中的搜尋

在過去幾個反覆專案中,NuGet 資源庫已引進變更,大幅改善了套件搜尋的速度和相關性。 不過,這些改進僅限於 nuget.org 網站。 NuGet 2.1 可透過 [NuGet 套件管理員] 對話方塊來改善搜尋體驗。 例如,假設您想要尋找 Windows Azure 快取預覽版套件。 此套件的合理搜尋查詢可能是「Azure 快取」。 在舊版的套件管理員對話框中,所需的套件甚至不會列在結果的第一頁。 不過,在 NuGet 2.1 中,所需的套件現在會顯示在搜尋結果頂端。

Package manager dialog search

強制套件更新

在 NuGet 2.1 之前,NuGet 會在版本號碼不高時略過更新套件。 這為特定案例帶來了摩擦,特別是在組建或 CI 案例中,小組不想隨著每個組建遞增套件版本號碼的情況。 想要的行為是強制更新,而不管怎樣。 NuGet 2.1 會使用 「重新安裝」旗標來解決此問題。 例如,嘗試更新沒有較新套件版本的套件時,舊版 NuGet 會產生下列結果:

PM> Update-Package Moq
No updates available for 'Moq' in project 'MySolution.MyConsole'.

使用重新安裝旗標,不論是否有較新版本,套件都會更新。

PM> Update-Package Moq -Reinstall
Successfully removed 'Moq 4.0.10827' from MySolution.MyConsole.
Successfully uninstalled 'Moq 4.0.10827'.
Successfully installed 'Moq 4.0.10827'.
Successfully added 'Moq 4.0.10827' to MySolution.MyConsole.

重新安裝旗標證明有益的另一個案例是架構重新鎖定。 變更專案的目標架構時(例如,從 .NET 4 變更為 .NET 4.5),Update-Package -Reinstall 可以更新專案中所安裝之所有 NuGet 套件的正確元件參考。

在 Visual Studio 中編輯套件來源

在舊版 NuGet 中,從 Visual Studio 選項對話框中更新套件來源時,需要刪除並重新新增套件來源。 NuGet 2.1 藉由支援更新作為組態使用者介面的第一類函式來改善此工作流程。

Package manager configuration dialog

錯誤修正

NuGet 2.1 包含許多錯誤修正。 如需 NuGet 2.0 中修正的工作專案完整清單,請檢視 [NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Fixed&type=All&priority=All&release=NuGet%202.1&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0)