VSTS Packages可以讓我們自訂團隊的Nuget Service,我們可以把自訂元件放到VSTS內,並分享給團隊人使用,一般來說這樣應用問題不太大,不過,用一段時間發現一個問題,就是當要把這個元件從Package Feed移掉時候,並沒有想像中簡單。雖然,介面上有提供Unlist & Delete Package,前者是讓這個版本不顯示在Feed上面,後者則是把這版本元件給刪除,當然同時也不會顯示在Feed上面。
又或者不想透過介面去刪除,也可以透過Nuget指令刪掉。不過,這樣都只能一個一個手動處理,似乎不太方便,介面也不能多選後刪除,在管理上,想讓這個元件完全消失在團隊的Feed列表,就必須刪除這個元件所有版本才可以,這樣可能會按到手痠,因此,這一段就必須自己寫一點點小程式讓它自動刪除所有版本。
第一步,下載Nuget.exe
下載VSTS上面的Download NuGet + VSTS Credential Provider工具,這壓縮檔裡面會有Nuget.exe
執行檔,曾經試過用nuget.org下載的Nuget.exe
,即使輸入VSTS帳號密碼,依舊會再跟你要一次帳號密碼,呈現無窮迴圈狀態,所以,還是建議使用從這邊下載的Nuget.exe
來用
在執行有發生彈跳一個輸入VSTS彈跳視窗,這邊只要輸入登入VSTS帳號密碼後,就可以了,後面就不需要再輸入
第二步,撰寫小程式
這邊使用PowerShell
指令來撰寫,一般來說要控制VSTS Package上面可使用nuget
和PowerShell
指令,只是後者必須在Visual Studio中的套件管理去下指令。但是,針對刪除套件這件事來說,目前就只能透過Nuget.exe
執行了,而Nuget的刪除指令如下:
- 首先必須取得該套件所有版本列表,這邊加入
-prerelease
,主要是找出beta的版本,因為預設只會找Release版本,
|
|
- 再來就是執行Nuget的刪除指令
|
|
因此,把這兩個指令組合起來,用Foreach
讀取所有版本號,放入刪除功能中
在這邊有加入一個echo 是
,這主要是當你刪除時候,會跳出詢問框,問你是否真的要刪除,為了達到自動化目的,所以加入這個指令,如果今天你的OS是英文版,要把是
改成Yes
,後續再加工一下,把XXXXX這個元件名稱當作外部參數輸入,就可以讓ps
檔能自動化執行了。就可以省下很多人工要去刪除套件版本的時間