NuGet的使用心得
前言
上星期发布了NuGet的使用和服务搭建后,同时NuGet在部门里也使用了起来。经过这些天的使用,总结了些小技巧和注意点,希望和大家分享下。
问题提出
使用了NuGet的朋友们估计都知道,在签入代码到TFS的时候,会把从NuGet下载的程序包包含并签入到TFS,而且每更新了一次程序包,都会重新签入一份新的版本程序包,那么,问题来了,随着时间推移,程序包的版本会越来越多,那么签入到TFS代码库的程序包也会越来越多,而旧版本又不需要了,没必要占着空间。

翻看了很多资料,发现【启用NuGet程序包还原】可以很好的解决问题。
启用NuGet程序包还原
开始我看到这个功能,想了半天也没搞清楚干嘛用的。后来试了一下,发现就是一个自动下载的程序包的功能,可能我这么说得有点含糊。
在解决方案右键,点击【启用NuGet程序包还原】,各种确定后发现解决方案里多了个.nuget文件夹,我们暂且先不理是干嘛的。在此之后,我们安装其他的程序包之后签入,会发现并未包含已安装的程序包,而需要签入的只是几个config文件和项目文件而已。那么将文件签入到TFS,其他人获取最新后只有配置文件变更了,没有拿到程序包难道编译不会失败么?

打开【引用】,发现几个从NuGet安装的组件库的确报黄色感叹号,不用着急,生成一次项目就可以了,可以从下方的生成信息里发现,解决方案缺少的程序包会自动从NuGet上自动下载与Package.config对应的版本。

注意点
用【启用NuGet程序包还原】后,会从已配置好的【程序包源】里下载对应的程序包。
换句话说,假如你在内部NuGet服务下载了程序包并签入了文件,但某个同事可能是新来的,vs的【程序包源】没有添加内部程序包源,就会导致无法自动下载程序包,导致编译报错。
因此,我在部门使用的时候要求各位同时在vs里添加上内部程序包源,包括开发和测试。
另外,在更新程序包的时候,可能因为独占签出文件导致程序包更新失败的,可以在之前更新程序包的时候签出选择保持原有锁,或者在更新失败后,把更新失败组件库删除了,重新安装一次。
新想法
有同事提出,假如每次更新程序包,都得通过【NuGet Package Explorer】上传,然后打开vs里的【管理NuGet程序包】点击更新,那多麻烦~~~
有没有办法可以做到发布或生成的时候就上传程序包,或获取最新的时候自动更新最新的程序包版本。
具我了解可以的!因为这些发布程序包和更新程序包都可以通过写命令行进行操作的,那么再通过写一个vs插件结合发布和获取最新,应该是可以实现的。
如果园子里的朋友有哪位曾经做过,可以分享一下心得。
NuGet的使用心得的更多相关文章
- mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理
1.mvc5+ef6+Bootstrap 项目心得--创立之初 2.mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理 3.mvc5+ef6+Bootstrap 项目心得--WebG ...
- mvc5+ef6+Bootstrap 项目心得--创立之初
1.mvc5+ef6+Bootstrap 项目心得--创立之初 2.mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理 3.mvc5+ef6+Bootstrap 项目心得--WebG ...
- Nuget的使用
前言 最近看到园子上有关于NuGet (读音:new get)的使用,所以心血来潮也跟着学习做了一下,觉得很流b哦.于是也就记一下自己的学习心得(并非一味的重复轮子,只是觉得他人做的写的就是对的,自己 ...
- 还在用NuGet吗?大哥FuGet了解一下
前言 你可能不知道是,NuGet已经发布10年了,从 Visual Studio 2010 第一次官方集成NuGet以来,这10年间有聚集了超过 14万 的包,这些包有超过 150万 的版本提供,大约 ...
- [转]mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理
本文转自:http://www.cnblogs.com/shootingstar/p/5629668.html 1.mvc5+ef6+Bootstrap 项目心得--创立之初 2.mvc5+ef6+B ...
- 如何使用MiniProfiler(附最新版MiniProfiler使用心得)
MiniProfiler这个工具早就久仰大名,不过之前一直没有动力去用,正好最近手上有个ASP.NET MVC的项目,正好拿来试试手,下面是使用最新的4.0.138版本的心得体会以及踩到一些小坑的解决 ...
- Visual Studio容器项目工程化心得
引言 关注博主的网友会看到我使用ASP.NET Core 容器化部署企业级项目的过程, 回想到开发过程中,鄙人有一些工程化心得, 分享给同学们. 项目工程化 因为本项目涉及单元测试Project.容器 ...
- 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何
基于 Vue.js 之 iView UI 框架非工程化实践记要 像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...
- .Net Core 三大Redis客户端对比和使用心得
前言 稍微复杂一点的互联网项目,技术选型都可能会涉及Redis,.NetCore的生态越发完善,支持.NetCore的Redis客户端越来越多, 下面三款常见的Redis客户端,相信大家平时或多或少用 ...
随机推荐
- Newtonsoft post Json 日期格式处理
Newtonsoft.Json.Converters.IsoDateTimeConverter DateTimeConverter = new Newtonsoft.Json.Converters. ...
- Java数据库连接关闭后无法启动
错误如下: java.sql.SQLException: No operations allowed after connection closed. at com.mysql.jdbc.Connec ...
- python 重载 __hash__ __eq__
__author__ = 'root' from urlparse import urlparse class host_news(): def __init__(self, id, url): se ...
- Introduction to Gaussian Processes
Introduction to Gaussian Processes Gaussian processes (GP) are a cornerstone of modern machine learn ...
- uva 1400 - "Ray, Pass me the dishes!"
又是一道线段树区间更新的题: #include<cstdio> #include<algorithm> #include<cstring> #define ll l ...
- 【HDU 3949】 XOR (线性基,高斯消元)
XOR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- ANDROID_MARS学习笔记_S02重置版_001_Hander\Looper\Message\Thread\ThreadLocal
一. * class LooperThread extends Thread { * public Handler mHandler; * * public void run() { * Looper ...
- Qt无边框MainWindow如何拖动四周改变大小
原来还有winEvent(), x11Event() and macEvent() 这些东西...不过貌似还需要找更好的办法,否则就无法跨平台了. 你需要重新处理部分窗体事件,以下代码适用于Windo ...
- 虚拟机安装了ubuntu,忘记密码修复
在虚拟机中按照以下步骤重新为用户设定新密码. 重启Ubuntu,随即长按shift进入grub菜单: 选择recovery mode,回车确认: 在Recovery Menu中,选择“Root Dro ...
- sed 变量替换 把m.txt文件中的$i替换成$j
zabbix:/root/zabbix# cat a1.sh for j in {1..48} do sed "s/\$i/$j/g" m.txt >>tmp.txt ...