網頁

VSO簽出packages少了dll怎麼辦?

VSO簽出packages少了dll怎麼辦?

高美館-阿魯巴
from:https://www.flickr.com/photos/yellowmo/4754749137/

同事回報,簽出的專案無法編譯,查看之下發現,原來是新加入套件呈現黃色三角型狀態,直接點擊法(在黃色三角型套件點兩下)無效。刪除重新安裝法(Nuget移除重裝),被版本控管擋下,一堆@#$%^的訊息之後給出的關鍵號碼是「tf40024」,經G大神查詢後,連G大神說都它無能為力。又追到同事的Packags目錄之下,發現該套件目錄之下只有*.nupkg檔,正常是會含lib目錄,lib目錄下會含有此套件應有版本的DLL。

吼,這是誰簽入的啦,抓出去阿魯巴。

工作區找不到項目…或是您沒有存取權限

罪人小弟我,快回到本機查看。

由於套件是由我的電腦安裝與簽入,所以並不會產生專案無法編譯的情況。由於我想重新簽入含lib目錄與DLL檔的專案,我透過VS2015的Nuget進行了一次降級的動作。但不如人意,在Team Explorer裡看不到降級後的lib內容dll檔案!!!

我知道7月的鬼門開了,但VSO在雲端,應該天上管理,鬼魅們應該還無能力去上天做怪才是。

就在苦無辦法之際,看到一線訊息:

AutoMapper

很明顯可以看到,我將AutoMapper.4.0.4降級為AutoMapper4.0.3後的dll與xml出了一些問題。但直接到lib目錄下去查看,.dll與.xml都好好的在那裡。

upgrade

透過升級變更的方式也只解決了*.xml的問題,最關鍵的DLL還是無法加入VSO版控之內。

NuGet Packages資料夾該不該加入TFS版控?

很明顯,專案的Packages在簽入VSO版控中出了一些問題。這問題在應該是出在我加入與簽入AutoMapper.4.0.4時,只是當時沒注意那麼多,只進行了寫完,簽入,收工潛意識工作模式。正在思考怎辦處理這一問題的同時,腦中突然浮現黑大的文。

NuGet Packages資料夾該不該加入TFS版控?

在VS2015之前,很明顯,我們是採用策略二:packages進版控方式。之前一直平安無事,但這一次不知為何原因,應該是中了第二步簽入packages時要確認有包含dll及exe 的箭。

問題是我要怎麼救?

還好,老天對我不錯,目前整個team member已全數升級使用VS2015,重覆看著文章中的新版Visual Studio與NuGet 2.7+預設已開啟Automatic Package Restore功能,理論上什麼都不做就可以做到自動邏原,故大部分的情況下packages並不需要簽入TFS。好,就讓我們改走策略一:packages不進版控

刪除packages目錄

策略二:packages進版控改走策略一:packages不進版控非常簡單,首先確認packages.config裡的套件清單是你要的。(這裡我把AutoMapper升回去最新版)

然後透過Team Explorer的原始檔控制總管專案根目錄下的packages目錄進行刪除的動作。重新簽出專案,進行建置,就能看到packages目錄與所需的套件一一依packages.config的內容下載回來。

這次的經驗學習到將packages簽入版本管理是有風險的,Nuget 2.7之後的Automatic Packages Restore可透過packages.config來下載、管理套件,這大大避開啟了不必要風險。仔細想想,如果是第一次簽出,由版控中簽出packages目錄與檔案和從nuget.org下載差異只有頻寬,而我們是使用的Visual Studio Online本來就在雲端(非TFS),那不就一樣了。:D

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。