目錄
最古老的時候我們想引用乙個第三方類庫,方法就是先**第三方的dll檔案,然後放置到我們的專案中,然後新增引用來引用這些dll,這種方法有各種的不便,比如引用dll的版本不一致,或者dll忘記放到專案目錄提交等等,使用過老版本vs的應該都深有體會,nuget就是為了解決類庫引用的痛楚而出現的。
nuget是乙個vs的擴充套件外掛程式。我們在使用vs開發時,nuget能把在專案中新增、移除和更新引用的工作變得更加快捷方便。
我們可以通過vs選單上的「工具→擴充套件和更新」來檢視nuget
在解決方案管理器中,我們可以通過「右鍵子專案→管理nuget程式包」或「右鍵子專案下的引用→管理nuget程式包」來對該子專案的引用進行管理
在開啟的「管理nuget程式包」視窗中我們可以對該子專案引用的類庫進行管理
nuget中搜尋到的,一般都是該類庫最新版本的,在使用過程中,我們可能需要去**類庫的歷史版本,開啟nuget官網:
輸入要安裝的類庫關鍵詞,比如我要安裝ef的6.0.2版本,直接搜尋ef即可
第乙個即我們想要的,點選進入詳情
這裡我們能看到該類庫對其他類庫是否有依賴,以及類庫的各個歷史版本。安裝類庫的歷史版本就需要用到「程式包管理控制台」zncuo了,可以從選單「工具→nuget包管理器→程式包管理控制台」開啟
偶爾有碰到程式包管理控制台開啟失敗的情況,現象是開啟了這個視窗,但是裡邊是一片空白,後來查詢了下資料vs的nuget包管理器是依賴於windows作業系統的powershell的,從開始選單開啟一次powershell,然後在vs裡重新開啟程式包管理控制台問題就解決了。
接下來比如我們要安裝ef的6.0.2版本,在nuget官網上從ef的歷史版本中找到6.0.2,點進去就可以看到安裝命令
確保你要安裝的子專案沒選錯,然後將命令貼上到這裡回車執行,沒有錯誤提示就說明安裝成功了。
nuget安裝時會自動**類庫相關dll,存放路徑為解決方案目錄下package資料夾,因為package檔案會比較大,實際開發中一般不會隨原始碼一塊提交到svn或者git,所以從svn或者git拉取原始碼以後,第一次生成時nuget會自動還原專案中引用的類庫。偶有還原失敗的情況,可以手動還原重試,方法是:右鍵解決方案→啟用nuget程式包還原
如果nuget包還原失敗或者無法搜尋**類庫,請檢查nuget源是否可用,可以嘗試配置dns為百度開放dns:180.76.76.76,或者114.114.114.114,以及檢查自己電腦否使用了http**,瀏覽器翻(科)牆(學)外掛程式,vpn等,如果有**可以關閉/停用了**以後重試。
nuget還原實際使用中還碰到了部分解決方案包還原失敗的情況,即還原成功以後,在「解決方案管理器」中展開子專案的「引用資料夾」有黃色嘆號出現,此時可以在程式包管理控制台中使用如下命令重新安裝改子專案的包:
update-package -reinstall -projectname 專案名稱
如,重新安裝model專案的包:
update-package -reinstall -projectname bookshop.model
命令:update-package -reinstall可以重新安裝解決方案下的所有包,但是這裡不建議使用,因為被坑過一次,重新安裝解決方案的所有包耗時非常長,也沒有執行的必要性。
在實際使用中,如果我們要搭建2個框架相似的專案,假設其中乙個已經搭建好了,那麼另外乙個專案就不需要用nuget管理器介面再重新把所有的引用再次搜尋新增一遍了,只需要把對應子專案下的packages.config檔案複製過來,執行nuget還原命令即可。
部分類庫的nuget包的安裝以後不會在專案引用目錄下自動新增對相應dll的引用,比如mysql相關的mysql.data、mysql.data.entity,此時手動新增引用即可(右鍵解決方案→新增引用→程式集→擴充套件中找到新增即可)
在某些環境下我們可能需要離線安裝nuget包(比如開發用的電腦無法直接聯網)。
首先,我們需要去nuget官網**好需要安裝的nuget包(即.nupkg字尾的檔案,需要注意的是離線安裝模式依賴項需要手動**安裝)
其次,新增程式設計客棧nuget離線源,通過選單「工具→nuget包管理器→程式包管理器設定」開啟nuget包管理器配置。
點選右上角的新增按鈕,填寫自定義的源名稱和位址路徑,可以配置任意的資料夾,將**好的.nupkg包檔案放入該資料夾即可。
然後我們在nuget包管理器中源選擇我們建立的離線源就可以看到我們剛才放進去的離線包了
接下來安裝即可,需要注意的www.cppcns.com是離線安裝可能會提示依賴問題,需要手動安裝依賴後才能安裝成功
Oracle spool使用實踐
spool是oracle sql plus下的命令,可以用它來匯出表中的大量資料,生成格式可以由自己手動控制。因工作需要將oracle下的某張表的資料遷移到mysql下,所以學習了下spool的用法,下面就乙個小例子 匯出scott使用者的dept表 來講解spool這個命令。1.編寫spool.s...
MVVM使用實踐
這篇博文是針對目前公司所在的團隊使用mvvm 具體可以看limboy的博文 的乙個問題總結和建議規範,記錄在此以作備份。首先再把這張圖拿出來看看 總結來說,團隊在使用mvvm模式的過程當中普遍存在的問題 分割線 什麼時候需要建立viewmodel?已經在實踐的 1.viewcontroller vi...
MVVM使用實踐
這篇博文是針對目前公司所在的團隊使用mvvm 具體可以看limboy的博文 的乙個問題總結和建議規範,記錄在此以作備份。首先再把這張圖拿出來看看 總結來說,團隊在使用mvvm模式的過程當中普遍存在的問題 分割線 什麼時候需要建立viewmodel?已經在實踐的 1.viewcontroller vi...