nuget的原理 使用nuget管理c 庫的原理

2021-10-17 06:04:55 字數 1094 閱讀 4343

使用nuget管理c++庫的原理

簡介通常使用c++庫需要在專案配置裡設定標頭檔案包含路徑和鏈結路徑。所以不同於c#庫直接將檔案放在指定位置就可以使用。

nuget指定了一系列的特殊目錄,用來管理包的內容,但是並不能管理c++庫,nuget自從2.5後開始支援管理c++庫。為此特意規定了乙個build目錄,build目錄中可以通過使用msbuild指令碼來達到自動配置路徑的效果,從而可以使用c++庫。

原理目錄結構

nuget包下的build目錄中按照平台來劃分子目錄,但是c++庫統一設為native平台,所以只有乙個native目錄。native下面有一系列的目錄,存放著庫的檔案,例如標頭檔案、lib檔案、dll之類的。並且根據配置不同,會分別存放多個版本(debug、release、x86,x64之類)的檔案。

通常目錄結構是這樣的

***.1.0.nupkg

└─xx.1.0.nuspec

└─build

└─native

├─bin

│ └─win32

│ └─v120

│ └─dynamic

│ ├─debug

│ │ └─xx_d.dll

│ └─release

│ └─xx_d.dll

├─include

│ └─xx.h

└─lib

│ └─win32

│ └─v120

│ └─dynamic

│ ├─debug

│ │ └─xx_d.lib

│ └─release

│ └─xx_d.lib

└─xx.targets

指令碼nuget管理器使用包的時候會尋找native下面和包名一樣的.targets檔案。並把他包含到專案的工程檔案(.vcxproj)中。.targets檔案是乙個msbuild指令碼,通常裡面會自動設定標頭檔案包含路徑和鏈結路徑、並且設定對應版本的鏈結庫,最後將對應版本的dll自動複製到生成目錄裡面。

打包然後填寫好.nuspec檔案中的描述資訊後就可以使用nuget命令打包,然後發布後就像正常的nuget包一樣使用。使用nuget包來引用c++庫後不需要再做任何額外的設定,只需要安裝nuget包就可。

Nuget使用總結

通過圖形介面安裝包 解除安裝包就好,很方便,基本上也不會出現什麼問題。如果nuget不支援某個程式包,那麼它會拒絕安裝。使用命令行時如果有拼寫錯誤,會出錯。安裝命令 install package 包名,新增引數 version可以選擇安裝指定的版本 install package 包名 versi...

離線使用nuget

先新建乙個專案,將所有想儲存下來或者要公升級的package先安裝或公升級。然後在專案中將packages資料夾全部拷貝出來,專門放到乙個目錄備用,以後的專案就可以根據此packages資料夾來離線使用。現在可以在離線狀態下新建專案,在tool option nuget package manage...

使用nuget管理c 庫的原理

通常使用c 庫需要在專案配置裡設定標頭檔案包含路徑和鏈結路徑。所以不同於c 庫直接將檔案放在指定位置就可以使用。nuget指定了一系列的特殊目錄,用來管理包的內容,但是並不能管理c 庫,nuget自從2.5後開始支援管理c 庫。為此特意規定了乙個build目錄,build目錄中可以通過使用msbui...