本篇blog包含使用TFS2017,VS2017等平台和工具搭建和使用NuGet库等基本过程,为团体提供更加自动化和高效的研发活动支持。

作为以产品线或者以专属业务为扩展的项目类型的软件研发团体,都会有自己的基础软件框架和功能模块的软件产品智力资产库。团队无形智力资产的积累和最大化使用,不仅是组织的软件成熟度能力的体现,更是软件企业或团体研发成本和经济效益的最大化平衡的有效手段。在研发团队中,开发一个大型的项目或产品通常会使用许多的公共类型的资源以及企业内部的一些基础资源,比如开源的前后端框架、脚本、DLL文件等等。这些被引用的资源之间也存在着诸多的依赖和版本差异,如果没有一个合理的项目库管理机制和平台,团队之间处理这些繁琐的活动要浪费许多的时间和精力。

在微软的TFS产品中,本身作为一个ALM过程的基础支撑平台,引入了包管理的功能支持。特别是基于微软开发平台的软件团队,针对公共的资源使用,我们大量使用www.nuget.org提供的共享资源,但是团体内部的公共代码类库我们通常不要放到公网上去,在内部使用通常还是使用人工复制拷贝的模式进行使用,当数量大到一定程度,由于多个版本,多研发人员共同协作,产生了大量的资源的浪费。比如,一个研发人员打开一个项目进行工作,通常会因为软件包之间的各种依赖,导致程序无法运行调试,通常要花费许多的时间来查找和整理这些共享的类包。

下面记录了一个搭建和使用私有NuGet托管库的一些过程,希望可以为这方便有需求的朋友和团体提供一些有价值的参考。

1、 在TFS2017中配置包管理库

首先在TFS Web Portal中创建一个新的托管包源。

下载nuget.exe工具,备用。

完成后我们的一个私有的NuGet托管库就已经完成了,后续是如何发布我们的类包到私有库中。

2、 制作类包

首先我们准备一个非常简单的类库项目。并包含一个对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的依赖。

3、 使用私有类包

准备一个简单的Window桌面应用程序。

在VS的“程序包管理设置”中添加上面创建的私有托管NuGet库。

在项目的“管理NuGet程序包”中,为项目添加自制包的应用。

完成后,项目中添加如下的引用和资源包,并使用类库中提供的方法。

企业或团体的内部共享资源包通过一定规划,按照2或3种维度属性,合理组织和权限管理后,并对开发团队进行简单的指导和培训,对于开发周期过程中提供智力资产的复用和提升研发效率会有立竿见影的效果。

基于微软开发平台构建和使用私有NuGet托管库的更多相关文章

  1. 【Microsoft Azure 的1024种玩法】三.基于Azure云平台构建Discuz论坛

    [简介] Discuz!是一套通用社区论坛软件系统,用户在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能.很强负载能力和可高度定制的论坛服务. [前期文章] [操作步骤] ...

  2. 最新研发的基于Java的高速开发平台

    可自我扩展的智能开发平台       在开发平台设计过程中,联科研发部一開始就希望能研发一套智能开发机制能自己开发自己的平台-即一个能自我修复和自我扩展的开发平台.这个开发平台不但能开发其它应用还能不 ...

  3. APICloud发布低代码开发平台

    云原生的出现,致使传统IT模式正在集中向云架构.云开发转型,其中在企业业务的互联网化.数字化进程中尤为突出,并衍生出“敏捷开发”.“快速迭代”的刚性需求.面对双模IT,如何打造全新的IT团队与模式?并 ...

  4. 商业创新不能等?用友低代码开发平台YonBuilder为您加速!

    随着云计算.人工智能.物联网.大数据.5G等新一代技术的快速发展,越来越多的企业希望借助技术的力量加速数智化转型,期许通过更加敏捷和强大的应用系统推动企业的商业创新速度.但传统软件开发周期长.开发成本 ...

  5. Meteor全栈开发平台 - 不仅仅是前端

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...

  6. 微软云平台媒体服务实践系列 2- 使用动态封装为iOS, Android , Windows 等多平台提供视频点播(VoD)方案

    文章微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案  介绍了如何针对少数iOS, Android 客户端的场景,出于节约成本的目的使用媒体服务的静 ...

  7. Meteor全栈开发平台

    Meteor全栈开发平台 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonno ...

  8. 基于微软平台IIS/ASP.NET开发的大型网站有哪些呢?

    首先说明一下,本文绝不是要说Microsoft平台多么好,多么牛.只是要提醒一些LAMP/JAVA平台下的同志们,微软平台不至于像你们说的,和想象的那么不堪!只是你们自己不知道而已.同时,也希望广大M ...

  9. Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud

随机推荐

  1. javascript 计算两个日期的差值

    代码 Typescript版 /** * TimeSpan just like the class TimpSpan in C# ,represent the time difference * @c ...

  2. iOS 创建OpenGL 环境的思考

    关于如何从头开始创建环境,可以参考大神的博文OpenGL ES 3.0 数据可视化 0:Hello world,本文只是补充一些我在实践中的一些思考. CAEAGLLayer If you plan ...

  3. java-9 异常处理

    1.异常处理的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如 ...

  4. Java初学练习答案(循环)

    /* 题目如下: 1 (for 循环)*编程找出四位整数abcd 中满足下述关系的数. (ab+cd)(ab+cd)=abcd 2 (循环)*读入一个整数n,输出如下图形 n = 3 * *** ** ...

  5. Java丨博客系统

    后台界面: 前台界面: 这是一个由我带着刚入门的几位实习生做的一个博客系统,希望给java入门的学习者一个例子,这个系统还需要完善,主体功能是实现了,还差一些细节,如果需要源码的话可以在下方给我留言! ...

  6. 从C#到TypeScript - Generator

    总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...

  7. ROM与RAM知识

    “ROM”和“RAM”的意思: “ROM”:N年前代表一种只能写入和读取,而不能改写和擦除的设备,可以用光驱CD-ROM来说明这个道理.目前的“ROM”已经不是这个道理了,它的技术已经飞快的发展到现在 ...

  8. 以setTimeout来聊聊Event Loop

    平时的工作中,也许你会经常用到setTimeout这个方法,可是你真的了解setTimeout吗?本文想通过总结setTimeout的用法,顺便来探索javascript里面的事件执行机制. setT ...

  9. i++与++i陷阱

    对于++i与i++编程必不可少,它们的区别:一般人只知道++i是先将i加一再进行其他操作,i++是先将i进行其他操作,再将其加一. 但是对于i++其中的执行过程,语言环境很关键.先来两个程序,看结果是 ...

  10. Spring+SpringMVC+MyBatis+easyUI整合基础篇(七)JDBC url的连接参数

    在java程序与数据库连接的编程中,mysql jdbc url格式如下: jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值 ...