天天看點

按Solution擷取已經引用的NuGet的Package

NuGet是個不錯的東西,在項目中,NuGet都會将下載下傳的檔案儲存在packages檔案夾裡

很多時候我并不想将所有的Package都上傳到源代碼管理中去。

但NuGet隻提供了按Project去擷取NuGet的方法。于是還是自己寫一個工具來完成這個任務吧。

為了日後可以友善地內建到Build的過程中去,是以使用Msbuild的Task去做這件事會具有更好的擴充性。

一、首先,需要一個NuGet的MsBuild的Task包,這個NuGet已經提供了

<a href="http://nuget.codeplex.com/SourceControl/list/changesets">http://nuget.codeplex.com/SourceControl/list/changesets</a>

下載下傳後編譯使用NuGet.MSBuild.dll即可,另外還需要NuGet.Core.dll和NuGet.targets(編譯後會和NuGet.MSBuild在一起)

按Solution擷取已經引用的NuGet的Package

二、packages檔案夾中有repositories.config檔案

按Solution擷取已經引用的NuGet的Package
按Solution擷取已經引用的NuGet的Package

三、預備工作OK了,當然我們存放檔案得有點規矩

lib\NuGet lib\msbuild\ICSharpCode.SharpZipLib.dll lib\msbuild\MSBuild.Community.Tasks.dll lib\msbuild\MSBuild.Community.Tasks.Targets lib\NuGet\NuGet.Core.dll lib\NuGet\NuGet.MSBuild.dll lib\NuGet\NuGet.targets

那麼下面我們來搞定一個MsBuild的Project檔案

将之存為UpdateNuGet.proj

四、接下來隻有調用的問題了,我們可以通過批處理去調用

将之存為UpdateNuGet.bat這樣我們就可以在擷取代碼之後,運作UpdateNuGet.bat來擷取所有的NuGet Package了

當然我們也可以在Project編輯時設定BeforeBuild的事件來擷取

下載下傳所有檔案(解壓到解決方案根目錄即可)