訓練
模組
建立新的 .NET 專案並使用套件相依性 - Training
建立 .NET 專案,並了解如何在專案中新增套件及管理套件相依性。 使用 .NET Core CLI 與 NuGet 登錄,透過 Visual Studio Code 將程式庫與工具新增至您的 C# 應用程式。
NuGet 2.6.1 for WebMatrix 版本資訊 | NuGet 2.7.1 版本資訊
NuGet 2.7 於 2013 年 8 月 22 日發行。
我們想要感謝下列外部參與者對 NuGet 2.7 的重大貢獻:
[Mike Roth](http://www.codeplex.com/site/users/view/mxrss)
(@mxrss) [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)
(@adamralph) [#1956](http://nuget.codeplex.com/workitem/1956)
- 將 developmentDependency 屬性新增至 packages.config
,並在 pack 命令中使用它只包含運行時間套件[Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael)
(@tkrafael) [Ben Phegan](http://www.codeplex.com/site/users/view/benphegan)
(@BenPhegan) [#2610](http://nuget.codeplex.com/workitem/2610)
- 將電腦快取大小增加到 200。[Slava Trenogin](http://www.codeplex.com/site/users/view/derigel)
(@derigel) [#3217](http://nuget.codeplex.com/workitem/3217)
- 修正 NuGet 對話框,顯示錯誤索引標籤中的更新[#3248](http://nuget.codeplex.com/workitem/3248)
- 修正不存在的 packageId 上的 SharedPackageRepository FindPackage/FindPackagesById 將會失敗[Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG)
(@kevfromireland) [#3234](http://nuget.codeplex.com/workitem/3234)
- 啟用 Nomad 項目的支援[Corin Blaikie](http://www.codeplex.com/site/users/view/corinblaikie)
(@corinblaikie) [#3252](http://nuget.codeplex.com/workitem/3252)
- 修正推送命令失敗,檔案不存在時結束代碼 0。[Martin Veselý](http://www.codeplex.com/site/users/view/veselkamartin)
[#3226](http://nuget.codeplex.com/workitem/3226)
- 在專案參考資料庫專案時,修正 Add-BindingRedirect 命令的錯誤。[Miroslav Bajtos](http://www.codeplex.com/site/users/view/miroslavbajtos)
(@bajtos) [#2891](http://nuget.codeplex.com/workitem/2891)
- 修正 'exclude' 屬性中 nuget.pack 剖析通配符的錯誤。[Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981)
(@zippy1981) [#3307](http://nuget.codeplex.com/workitem/3307)
- 修正錯誤 NuGet.targets
不會在還原套件時將 $(Platform) 傳遞至nuget.exe。[Brian Federici](http://www.codeplex.com/site/users/view/benerdin)
[#3294](http://nuget.codeplex.com/workitem/3294)
- 修正nuget.exe套件命令中的錯誤,以允許新增具有相同名稱但不同大小寫的檔案,最終導致「專案已存在」例外狀況。[Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino)
(@kzu) [#2990](http://nuget.codeplex.com/workitem/2990)
- 將 Version 屬性新增至 NetPortableProfile 類別。[David Simner](https://www.codeplex.com/site/users/view/DavidSimner)
[#3460](https://nuget.codeplex.com/workitem/3460)
- 如果 requireApiKey = true,則修正 Bug NullReferenceException,但標頭 X-NUGET-APIKEY 不存在[Michael Friis](https://www.codeplex.com/site/users/view/friism)
(@friism) [#3278](https://nuget.codeplex.com/workitem/3278)
- 修正 NuGet.Build 目標檔案,使其可在 MonoDevelop 上正常運作[Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm)
(@pranav_km) NuGet 2.7 引進了套件還原的新方法,同時也克服了主要障礙:套件還原同意現在默認為開啟! 新方法與隱含同意的組合將大幅簡化套件還原案例。
使用 NuGet 2.0、2.1、2.2、2.5 和 2.6 版,用戶必須明確允許 NuGet 在建置期間下載遺漏的套件。 如果未明確指定此同意,則啟用套件還原的解決方案將無法建置,直到使用者授與同意為止。
從 NuGet 2.7 開始,套件還原同意預設為 ON,同時允許用戶視需要明確 退出宣告 套件還原,並使用 Visual Studio 中 NuGet 設定中的複選框。 隱含同意的這項變更會影響下列環境中的 NuGet:
從 NuGet 2.7 開始,即使尚未針對解決方案明確啟用套件還原,NuGet 也會在 Visual Studio 建置期間自動下載遺失的套件。 當您建置專案或方案時,會在 Visual Studio 中執行此自動封裝還原,但在叫用 MSBuild 之前。 這會產生一些顯著的優點:
若要在 Visual Studio 中使用自動封裝還原,您只需要採取一個 (in)動作:
packages
有數種方式可從原始檔控制省略資料夾 packages
。 如需詳細資訊,請參閱 套件和原始檔控制 主題。
雖然所有使用者都隱含加入自動套件還原同意,但您可以輕鬆地透過Visual Studio中的 封裝管理員 設定退出。
NuGet 2.7 引進了nuget.exe的新功能: nuget.exe restore
這個新的 Restore 命令可讓您藉由接受方案檔案或資料夾做為自變數,輕鬆地使用單一命令來還原方案的所有套件。 此外,當目前資料夾中只有單一解決方案時,就會隱含該自變數。 這表示下列所有工作都來自包含單一方案檔的資料夾(MySolution.sln):
[還原] 命令會開啟方案檔,並在方案內尋找所有專案。 它會從該處尋找 packages.config
每個項目的檔案,並還原找到的所有套件。 它也會還原檔案中找到 .nuget\packages.config
的解決方案層級套件。 如需有關新還原命令的詳細資訊,請參閱 命令行參考。
我們對套件還原的這些變更感到興奮,因為它引進了新的工作流程。 如果您想要省略原始檔控制中的套件,您只是不會認可 packages
資料夾。 開啟和建置解決方案的Visual Studio使用者將會看到套件自動還原。 針對命令列組建,只要在叫用 之前叫 nuget.exe restore
用 msbuild
。 您不再需要記得在解決方案上使用「啟用 NuGet 套件還原」手勢,我們不再需要修改您的專案來改變組建。 這也會針對包含 MSBuild 匯入的套件產生許多改善的體驗,特別是針對透過 NuGet 最近功能新增的匯入,以便 從 \build 資料夾自動匯入 props/targets 檔案 。
除了我們自己所做的工作之外,我們還與一些重要合作夥伴合作,以全面解決這個新的方法。我們還沒有具體時程表,但每個合作夥伴都和我們對新方法一樣興奮。
nuget.exe restore
整合到預設建置案例中。nuget.exe restore
。nuget.exe restore
。在上述每個合作夥伴中,他們會使用自己的nuget.exe複本,而您不需要在解決方案中攜帶nuget.exe。
在初始 2.7 版本中,nuget.exe還原有兩個已知問題,但在 2013 年 9 月 6 日已修正 NuGet.CommandLine 套件的更新。 此更新也可在 CodePlex 上使用 [NuGet 2.7 download page](https://nuget.codeplex.com/releases/view/107605)
。 執行 nuget.exe update -self
將會更新至最新版本。
固定的為:
[New package restore doesn't work on Mono when using SLN file](https://nuget.codeplex.com/workitem/3596)
[New package restore doesn't work with Wix projects](https://nuget.codeplex.com/workitem/3598)
新的套件還原工作流程也有已知問題,其中。[Automatic Package Restore does not work for projects under a solution folder](https://nuget.codeplex.com/workitem/3625)
NuGet 2.7.1 已修正此問題。
在複位目標或升級項目之後,您多次發現某些 NuGet 套件無法正常運作。 不幸的是,沒有跡象表明這一點,然後沒有關於如何解決它的指導方針。 使用 NuGet 2.7,我們現在會使用一些 Visual Studio 事件來辨識當您已將項目複位目標或升級的方式,以影響您已安裝的 NuGet 套件的方式進行辨識。
如果我們偵測到您的任何套件都受到複位目標或升級的影響,我們將產生立即建置錯誤,讓您知道。 除了立即建置錯誤之外,我們也會針對所有受複位目標影響的套件,在您的檔案中packages.config
保存requireReinstallation="true"
旗標,Visual Studio 中的每個後續組建都會引發這些套件的組建警告。
雖然 NuGet 無法採取自動動作來重新安裝受影響的套件,但我們希望此指示和警告可引導您探索何時需要重新安裝套件。 我們也會處理 這些錯誤訊息引導您前往的套件重新安裝指引檔 。
許多公司都在內部使用 NuGet,但很難引導其開發人員使用內部套件來源,而不是 nuget.org。NuGet 2.7 引進設定預設值功能,允許針對指定全機器的預設值:
這些現在都可以在位於的 %ProgramData%\NuGet\NuGetDefaults.Config
檔案中設定。 如果此組態檔指定套件來源,則預設 nuget.org 套件來源將不會自動註冊,而且 NuGetDefaults.Config
中的套件來源將會改為註冊。
雖然不需要使用這項功能,但我們預期公司會使用組策略來部署 NuGetDefaults.Config
檔案。
請注意,這項功能絕不會導致套件來源從開發人員的 NuGet 設定中移除。 這表示,如果開發人員已經使用 NuGet,因此已註冊 nuget.org 套件來源,則在建立 NuGetDefaults.Config
檔案之後不會予以移除。
如需此功能的詳細資訊,請參閱 NuGet 設定預設值。
NuGet 一律註冊稱為「NuGet 官方套件來源」的預設套件來源,指向 nuget.org。這個名稱很詳細,也沒有指定它實際指向的位置。 為了解決這兩個問題,我們已將此套件來源重新命名為UI中的「nuget.org」。 套件來源的 URL 也已變更為包含 「www.」 前置詞。 使用 NuGet 2.7 之後,現有的“NuGet 官方套件來源”會自動更新為 “nuget.org” 作為其名稱和 “https://www.nuget.org/api/v2/” 作為其 URL。
我們在 2.7 中進行了一些效能改善,這會產生較小的記憶體使用量、較少的磁碟使用量和更快的套件安裝。 我們也對 OData 型摘要進行更聰明的查詢,以減少整體承載。
我們在擴充性服務中新增了一些新的 API,以填補先前版本中遺漏的功能缺口。
// Checks if a NuGet package with the specified Id and version is installed in the specified project.
bool IsPackageInstalledEx(Project project, string id, string versionString);
// Get the list of NuGet packages installed in the specified project.
IEnumerable<IVsPackageMetadata> GetInstalledPackages(Project project);
// Installs one or more packages that exist on disk in a folder defined in the registry.
void InstallPackagesFromRegistryRepository(string keyName, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);
// Installs one or more packages that are embedded in a Visual Studio Extension Package.
void InstallPackagesFromVSExtensionRepository(string extensionId, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);
此功能是由 Adam Ralph 所提供,它可讓套件作者宣告只在開發階段使用的相依性,而且不需要套件相依性。 藉由將屬性新增 developmentDependency="true"
至 中的 packages.config
封裝, nuget.exe pack
將不再包含該套件作為相依性。
2.7 中的新套件還原模型是由與主要 NuGet VSPackage 不同的新 VSPackage 實作。 由於技術問題,這個新的 VSPackage 無法在 Visual Studio 2010 Express for Windows 電話 SKU 中正確運作,因為我們與其他支援的 Visual Studio SKU 共用相同的程式代碼基底。 因此,從 NuGet 2.7 開始,我們會從已發佈的延伸模組卸除對 Visual Studio 2010 Express for Windows 電話 的支援。 Visual Studio 2010 Express for Web 的支援仍包含在發佈至 Visual Studio 擴充功能庫的主要延伸模組中。
由於我們不確定有多少開發人員仍在該版本的Visual Studio中使用 NuGet,因此我們會特別針對這些使用者發佈個別的Visual Studio延伸模組,並在 CodePlex 上發布它(而不是 Visual Studio 擴充功能庫)。 我們不打算繼續維護該延伸模組,但如果這會影響您,請在 CodePlex 上提出問題來讓我們知道。
若要下載 NuGet 封裝管理員(適用於 Visual Studio 2010 Express for Windows 電話),請瀏覽[NuGet 2.7 Downloads](https://nuget.codeplex.com/releases/view/107605)
頁面。
除了這些功能之外,此 NuGet 版本也包含許多其他 Bug 修正。 版本中已解決 97 個問題。 如需 NuGet 2.7 中修正的工作專案完整清單,請檢視 [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.7&status=all)
。
訓練
模組
建立新的 .NET 專案並使用套件相依性 - Training
建立 .NET 專案,並了解如何在專案中新增套件及管理套件相依性。 使用 .NET Core CLI 與 NuGet 登錄,透過 Visual Studio Code 將程式庫與工具新增至您的 C# 應用程式。