NuGet已整合到MSBuild中

2021-09-17 05:02:21 字數 1548 閱讀 3683

對於c#和vb專案檔案,microsoft在嘗試推出基於json的專案格式後,又回歸到以msbuild為基礎。在推出此決策的同時,microsoft承諾會實現一些十分類似於project.json的特性。今天我們將**其中的乙個特性:nuget整合。

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

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

\\ nuget整合特性取消了解決方案層面的包資料夾,依賴將直接引用使用者的「package cache」目錄。要解釋為什麼microsoft以前不這樣,讓我們重新回顧一下以前版本nuget的「附加性」本質。鑑於編譯器不能理解nuget軟體包,因此需要在專案檔案中正確設定乙個「路徑線索」。由於每個使用者可以設定自身的「package cache」目錄,因此不能使用這樣的資料夾,需要創立解決方案層面的包資料夾,以確保相對的路徑線索對於所有的開發人員都是一樣的。

\\版本控制

\\ 對nuget專案引用的版本控制支援得到了很大的改進。現在可以使用範圍和萬用字元指定想要使用的軟體包版本資訊。範圍定義採用了數學中的通用語法:\\

舉個例子,如果你需要版本不低於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

\\ 感謝冬雨對本文的審校。

\\

NuGet已整合到MSBuild中

對於c 和vb專案檔案,microsoft在嘗試推出基於json的專案格式後,又回歸到以msbuild為基礎。在推出此決策的同時,microsoft承諾會實現一些十分類似於project.json的特性。今天我們將 其中的乙個特性 nuget整合。隨著packagereference這一新特性的提出...

swagger整合到springBoot 專案中

1 pom 檔案加包依賴 io.springfox springfox swagger2 2.2.2 io.springfox springfox swagger ui 2.2.2 2 啟動類加上註解 enableswagger 啟動該註解使得用在controller中的swagger註解生效,覆蓋...

Wordpress整合到zencart裡

如果你的zencart需要乙個blog來發布一些你的最新動態,可以試試wordpress,並且用woz這個zencart的module來把它們關聯起來。woz的全名叫wordpress on zencart。下面就詳細介紹一下woz的安裝方法,當然你可以在woz包裡找到英文的安裝說明。我所使用的版本...