基于微软开发平台构建和使用私有NuGet托管库
本篇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镜像上线试运行
通过ProGet搭建一个内部的Nuget服务器
原文地址:http://www.cnblogs.com/jlw123199/p/6604967.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
基于微软开发平台构建和使用私有NuGet托管库相关推荐
- 基于bboss开发平台eclipse开发工程生成工具介绍
为什么80%的码农都做不了架构师?>>> 基于bboss开发平台eclipse开发工程生成工具介绍 一.工具简介 bboss开发平台发布出两个资源包: war部署包 数 ...
- 恒丰银行基于大数据平台构建数据仓库的研究与实践
恒丰银行原传统数据仓库是建立在IOE(IBM.ORACLE.EMC)传统架构体系上,已接入数据源系统有30多个,配套建立监管数据集市.数据分析集市,风险数据集市三个主要数据集市,负责十几个管理应用和监 ...
- 基于统一开发平台的微服务架构转型升级之路 | 某国有大型银行案例
分享某国有大型银行统一开发平台的建设历程,重点介绍其当前正在建设的微服务开发平台中的关键点和实践经验. 转载本文需注明出处:微信公众号EAWorld,违者必究. 引言: 某银行是一家国有大型银行,从2 ...
- 2022年第十七届研电赛报名|安谋科技(Arm China)命题:基于特定开发平台的理性智能体设计
"兆易创新杯"第十七届中国研究生电子设计竞赛(以下简称"研电赛")现已正式开赛,企业命题已在官网发布,现官网已启动报名啦~ 安谋科技作为研电赛多年的合作单位及& ...
- 基于labview开发平台的声音信号采集及处理系统设计(任务书+lunwen+翻译及原文+vi源文件+查重报告)
目 录 摘 要 I Abstract I 目 录 III 第1章 绪 论 1 1.1 引言 1 1.2 声音信号处理的发展及应用 2 1.3 本课题研究任务及章节安排 3 第2章 系统设计方案 4 2 ...
- S60手机开发平台构建-塞班9.2+Carbide.c++
S60手机开发平台构建-塞班9.2+Carbide.c++ 在这里我们讨论的是为诺基亚的智能手机平台之一S60开发其软件的平台搭建.S60平台的基础是symbian操作系统,symbian操作系统是当 ...
- 基于阿尔法开发板构建卡启动固件
基于阿尔法开发板构建卡启动固件 1.前言 2.u-boot 2.1 u-boot修改 2.2 u-boot编译 2.3 u-boot烧录 3.kernel 3.1 kenrel编译 4.rootfs ...
- 基于labview开发平台的声音信号采集及处理系统设计
目 录 摘 要 I Abstract I 目 录 III 第1章 绪 论 1 1.1 引言 1 1.2 声音信号处理的发展及应用 2 1.3 本课题研究任务及章节安排 3 第2章 系统设计方案 4 2 ...
- 基于芯片研发平台构建运维体系
基于芯片研发平台构建运维体系 说起芯片研发平台的运维,一定要从EDA(电子设计自动化)研发环境的信息化建设说起.一块电脑主板的研发,到整台服务器的研发,都涉及到EDA研发环境的运维,是一个复杂的信息化 ...
最新文章
- 字符串的html语言,html语言解析为属性字符串NSMutableAttributedString
- 机器学习数据管理初创公司SafeGraph融资1600万美元
- A*,IDA*—高档次的暴搜
- python excelwriter保存路径_Python和Excel 终于可以互通了!!
- 用Convert类实现数据类型转换
- [转载]【文摘?国外的GIS猛校猛人】GIS派系大解密_拔剑-浆糊的传说_新浪博客
- 超级搜索术 总结篇2
- 蓝电电池测试软件电流密度,磷化铁复合材料的制备及其作为锂离子电池负极材料性能研究...
- Java的图标和由来
- 计算机基础之二进制详解(二)
- scRNA-seq Course 学习
- 个人台式计算机的主要安装步骤,台式机固态硬盘如何安装 台式机固态硬盘安装教程【图文详解】...
- Linux集群部署系列(六):Hadoop 在window系统下安装方法
- python中的列表是什么意思_python中列表的用法是什么
- 产品经理如何来优化CSDN手机短信验证的功能
- Python WingIDE中文乱码修复
- web3 solidity 基础 ERC20 大白话搞懂
- zigbee CC2530 系列教程 7 串口数据收发实验
- Win10系统,用C++调用OpenCV接口,播放本地视频文件,播放本地和网络摄像头
- 没经验开什么餐饮店好?开小拌同学麻辣烫简单创业
热门文章
- 并发编程总结4-JUC-REENTRANTLOCK-2(公平锁)
- 开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式
- LDAP启动cacao提示Invalid file permission
- 如何解决U盘无法停止通用卷设备
- JS实现上下左右四方向无间隙滚动
- 运维管理工具-- Deploy Assistant
- P6砖家:对不起,我没.NET5高并发经验,我要跑路了!
- 让 gRPC 提供 REST 服务
- 【Git】Git-常用命令备忘录(三)
- .NET Core 下使用 gRPC