精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

NuGet已整合到MSBuild中

責任編輯:editor004

作者: Jonathan Allen

2017-04-13 11:38:26

摘自:INFOQ

對于C 和VB項目文件,Microsoft在嘗試推出基于JSON的項目格式后,又回歸到以MSBuild為基礎。范圍定義采用了數學中的通用語法:不低于x y版本:[x y; 高于x y版本:(x y; 不高于x y版本:x y]; 低于x y版本:x y)。

對于C#和VB項目文件,Microsoft在嘗試推出基于JSON的項目格式后,又回歸到以MSBuild為基礎。在推出此決策的同時,Microsoft承諾會實現一些十分類似于project.json的特性。今天我們將探討其中的一個特性:NuGet集成。

一直以來,NuGet都是一個附加(bolt-on)在Visual Studio中的特性。但是編譯器雖然可以觸發NuGet軟件包的下載,卻無法理解這些軟件包。因此當一個軟件包完成下載后,需要被安裝到項目之中,其中可能包括更新裝配引用(Assembly Reference)、拷貝文件或是運行定制的PowerShell腳本。這一做法是非常脆弱的,開發人員時常需要在重新安裝軟件包前手工清理項目文件。

隨著PackageReference這一新特性的提出,很多類似的問題將不再出現。現在開發人員不再是引用個別的裝配,而是可以引用軟件包本身。

包引用現在是可傳遞的。這意味著你僅需引用一個軟件包即可,不再需要顯式地引用該軟件包所需的各個軟件包。按新聞發布稿中的說法,這可提升安裝或更新軟件包的性能達五倍。在一個例子中,一個10分鐘的過程降低到了30毫秒。

NuGet集成特性取消了解決方案層面的包文件夾,依賴將直接引用用戶的“Package Cache”目錄。要解釋為什么Microsoft以前不這樣,讓我們重新回顧一下以前版本NuGet的“附加性”本質。鑒于編譯器不能理解NuGet軟件包,因此需要在項目文件中正確設置一個“路徑線索”。由于每個用戶可以設置自身的“Package Cache”目錄,因此不能使用這樣的文件夾,需要創立解決方案層面的包文件夾,以確保相對的路徑線索對于所有的開發人員都是一樣的。

版本控制

對NuGet項目引用的版本控制支持得到了很大的改進。現在可以使用范圍和通配符指定想要使用的軟件包版本信息。范圍定義采用了數學中的通用語法:

不低于x.y版本:[x.y; 高于x.y版本:(x.y; 不高于x.y版本:x.y]; 低于x.y版本:x.y)。

舉個例子,如果你需要版本不低于1.4.2同時不高于1.5,可以使用“[1.4.2, 1.5)”。反之,如果你想要1.4版本家族中的所有版本,可以使用“1.4.*”。

現在可以使用IncludeAssets和ExcludeAssets標簽控制內容。它們已被包括在構建過程中,用于修改斷言的類型(分析器、內容文件等)。你甚至可以將斷言標記為私有的,這意味著其所標記的斷言是用于開發目的,不應該留給下游的軟件庫。

使用MSBuild創建NuGet軟件包

雖然在MSBuild中總是可以使用Exec命令加載NuGet的package命令,并傳入到規格文件中,但是在持續集成環境中最好不要這樣使用。因此這次發布版本實現了MSBuild直接打包項目,甚至適用于使用TargetFrameworks標簽定義了多個目標架構的項目。

談及這個問題,可能存在對不同的目標平臺應引用不同的軟件包這一需求。你可以使用PackageReference定義一個標準的MSBuild條件表達式,以表示引用的適用場景。

向后兼容問題

對NuGet集成特性的一個主要擔心是缺乏對一些舊版本NuGet特性的支持,例如內容文件夾(Content Folder)、XML文檔轉換(XDT),還有PowerShell腳本install.ps1和uninstall.ps1。

當前這些NuGet特性對于.NET Core和.NET標準項目是可用的。如果安裝了VS 2017 Update 1預覽版,其它類型的項目也可以使用NuGet集成特性。

查看英文原文:NuGet is Now Part of MSBuild

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 积石山| 登封市| 营口市| 茶陵县| 抚宁县| 文昌市| 嵊泗县| 宜阳县| 四川省| 桐庐县| 中阳县| 商丘市| 武陟县| 蚌埠市| 秭归县| 勃利县| 万年县| 上饶市| 泽州县| 中卫市| 苍山县| 苏尼特左旗| 富锦市| 德保县| 闻喜县| 宁南县| 二连浩特市| 文安县| 宁阳县| 临湘市| 都匀市| 定兴县| 莱阳市| 邓州市| 微山县| 焦作市| 宁晋县| 黔西县| 三门县| 杂多县| 贵港市|