本篇blog包含使用TFS2017,VS2017等平臺和工具搭建和使用NuGet庫等基本過程,爲團體提供更加自動化和高效的研發活動支持。json
做爲以產品線或者以專屬業務爲擴展的項目類型的軟件研發團體,都會有本身的基礎軟件框架和功能模塊的軟件產品智力資產庫。團隊無形智力資產的積累和最大化使用,不只是組織的軟件成熟度能力的體現,更是軟件企業或團體研發成本和經濟效益的最大化平衡的有效手段。在研發團隊中,開發一個大型的項目或產品一般會使用許多的公共類型的資源以及企業內部的一些基礎資源,好比開源的先後端框架、腳本、DLL文件等等。這些被引用的資源之間也存在着諸多的依賴和版本差別,若是沒有一個合理的項目庫管理機制和平臺,團隊之間處理這些繁瑣的活動要浪費許多的時間和精力。後端
在微軟的TFS產品中,自己做爲一個ALM過程的基礎支撐平臺,引入了包管理的功能支持。特別是基於微軟開發平臺的軟件團隊,針對公共的資源使用,咱們大量使用www.nuget.org提供的共享資源,可是團體內部的公共代碼類庫咱們一般不要放到公網上去,在內部使用一般仍是使用人工複製拷貝的模式進行使用,當數量大到必定程度,因爲多個版本,多研發人員共同協做,產生了大量的資源的浪費。好比,一個研發人員打開一個項目進行工做,一般會由於軟件包之間的各類依賴,致使程序沒法運行調試,一般要花費許多的時間來查找和整理這些共享的類包。框架
下面記錄了一個搭建和使用私有NuGet託管庫的一些過程,但願能夠爲這方便有需求的朋友和團體提供一些有價值的參考。工具
一、 在TFS2017中配置包管理庫spa
首先在TFS Web Portal中建立一個新的託管包源。3d
下載nuget.exe工具,備用。調試
完成後咱們的一個私有的NuGet託管庫就已經完成了,後續是如何發佈咱們的類包到私有庫中。blog
二、 製做類包資源
首先咱們準備一個很是簡單的類庫項目。幷包含一個對JQuery共有類庫的一個應用,在該示例中不太合理,目的是後面演示一下私有類庫對公有類庫的一個依賴使用。開發
打開上面建立的類庫項目的所在文件夾,並把nuget.exe程序拷貝到該目錄。並在該目錄啓動cmd,執行命令:nuget.exe spec,生成nuspec配置文件。
執行命令:nuget.exe pack ClassLibrary1\ClassLibrary1.csproj ,生成nugeg包文件。
按照前面下載nuget.ext界面中的命令,執行:nuget.exe sources Add -Name "PCL" -Source "http://tfs2017:8080/tfs/DefaultCollection/_packaging/PCL/nuget/v3/index.json" 添加源。
執行:nuget.exe push -Source "PCL" -ApiKey VSTS ClassLibrary1.1.0.0.0.nupk,推送自制包到私有託管庫中。
推送成功後,能夠看到TFS的WebPortal中的以下信息,包括如何獲取包命令參數,已經相關的基本信息,如本示例中對JQuery的依賴。
三、 使用私有類包
準備一個簡單的Window桌面應用程序。
在VS的「程序包管理設置」中添加上面建立的私有託管NuGet庫。
在項目的「管理NuGet程序包」中,爲項目添加自制包的應用。
完成後,項目中添加以下的引用和資源包,並使用類庫中提供的方法。
企業或團體的內部共享資源包經過必定規劃,按照2或3種維度屬性,合理組織和權限管理後,並對開發團隊進行簡單的指導和培訓,對於開發週期過程當中提供智力資產的複用和提高研發效率會有立竿見影的效果。