文档章节

发博小技巧——如何从项目中剔除第三方组件并在GitHub分享

赵晏龙
 赵晏龙
发布于 2013/03/18 21:38
字数 1696
阅读 2887
收藏 28

好了,又到了纯洁的博主的发波时间了。其实发博和奥特曼发射动感光波的原理是一样的,都是抓到一只小怪兽看着不爽K一顿,最后用动感光波发泄一下。今天博主正好在上次发波的时候遇到一只小怪兽,被博主关在房间里面用动感光波发泄了很久,今天也分享给各位我的发波心得,让大家意淫一下。啊不,是意会,意会一下。(呵呵输入法好邪恶)

上一次讲到在.Net中Selenium工程如何创建的问题。当时第一次发博,其实是博主小手一滑不小心点错了,本来准备附上代码一起发布的。但是后来再编辑的时候发现了一个问题,Oschina貌似不提供附件上传啊亲(本人色弱,找到的请大力拍砖!!),再者我的附件都有30+M,第三方库文件占了18M,还有10+M的文件是Git版本库(估计版本库里面包含了压缩过的第三方库),这个大小是哪个开放型网站都无法提供的吧?

现在我们有两个方案可选:

  • 其一,将文件打包后发布到某网盘中。问题在于网盘几乎都有各种限制,并且可靠性不高,有的还要下专门的软件才能下载啊上传啊,何况广告还到处飞,对于一个系统洁癖者来说,还不如割掉博主的GG先。
  • 其二,将文件直接推送到GitHub中,网站托管,并且和Git结合紧密,可以直接推送,可以直接在GitHub查看代码,无广告。

这样看起来,非GitHub莫属啊。博主兴致勃勃地将整个工程直接Push到了自己的GitHub中。耗时十来分钟就不说了,尼玛下载起来也就30+K的速度好不好!!!!!不管你有没有耐心,反正博主是没有了。

这样的做法不行啊亲,难道真的要我装个什么蛋、什么咬咬我的网盘客户端吗?那种东西和快播有什么两样!作为纯洁高尚的博主是绝对不允许这种东西进入硬盘的。

当晚博主在梦中得到真神阿拉的神圣启示,说要是博主这次不用GitHub分享代码明天起来就木有小GG(尼玛这叫什么启示)。

博主一琢磨,不行,说什么也不能做岳不群啊,怎么也要成为司马迁!

image

有了动力,做起事来就是快,首先博主找到了NuGet,这个工具是一个第三方库的集中管理工具,比如JQuery,NUnit等等库文件,都可以在其中搜索到,并且更新也很方便。

0、安装篇

通过Visual Studio的扩展管理器找到 NuGet,请务必安装2.2的版本,

image

image

1、发布篇

先用VS打开工程,然后童鞋们可以通过工具->库程序包管理器->管理解决方案的NuGet程序包启动它:

image

在如下窗口选择自己需要的程序包。当然,更好的方法是用搜索:

image

选择好需要的程序包后点击安装,选择你要将此包应用到哪个项目:

image

确定之后,第三方组件就安装完成了。

这时我们分析一下工程目录(以我的SeleniumInAction为例)大概应该类似于这样。(博主的收藏种子不能让你们发现了,打个码)

image

其中的packages文件夹就是我们刚刚安装的第三方组件的位置了

这时我们修改.gitignore文件,将其忽略不提交到源代码管理中:

加入    packages/    这么一行

这样,我们就成功的将其从源代码管理中删除了,妥妥的把项目提交到GitHub中分享~~~~

 

童鞋们不会真的以为这样就完了吧?以博主满脑精虫的智慧,是不会就此结束的!!!

很快有朋友反应了,下下来的代码没有库文件,编译失败啊亲!!!

好的,问题还在继续,那么怎么将已经剔除掉的这些个第三方组件还原呢?对于刚刚的项目,我们其实只需要做两步。(注意这里还是在讲发布啊亲

第一、在工具->选项菜单中,找到包管理器->常规选项,确认“允许NuGet在生成期间下载缺少的程序包”

image

做完这步还没有真正在你的项目中启动这项功能!!我们还需要在解决方案上点右键->启用NuGet程序包还原

image

现在,你的文件夹应该看起来是这样的(多出来一个.nuget文件夹):

image

image

这时直接提交,只会将上图中的Config和targets文件提交。到这里,发布的工作就完成了!

2、还原篇

Git的使用我就不多说了,这里欢迎大家使用我的GitHub来做试验,程序简短,库文件不多:

git://github.com/zhaoyan42/SeleniumInAction.git

image

代码才42.1KB有木有!!!!鸡冻得牛内有木有~~~!!!

目录结构应该如下(呵呵博主就喜欢在项目里面收藏种子有木有,万一提交上去了怎么办image,打个码):

image

可以发现此时是没有packages文件夹的,也就是说暂时没有第三方组件。(nunit.framework应该也是没有的,VS犯2了)

image

现在开始使用NuGet进行还原!!!!!!

首先在工具->选项菜单中,找到包管理器->常规选项,确认“允许NuGet在生成期间下载缺少的程序包”(只需要做一次就行,选过的就不用再选了,除非你觉得打勾很好玩)

image

同样我们还需要在解决方案上点右键->启用NuGet程序包还原

image

然后用VS的编译功能直接重新编译,编译的过程比通常的编译时间会要长一些,这个根据你的网络环境而定。(换句话说就是说一边编译一边在下载第三方组件)

image

image

引用的感叹号消失了,编译也成功,我们再看看项目文件夹:

imageimage

缺失的第三方组件被下载回来了!

 

现在来回忆一下还原步骤:

1、启用  2、编译 

是的,就这么简单!!!现在使用Git订购还将获得博主精心为大家准备的精美种子一份!!前十个订购的我们将赠送快播浏览器永久使用权!还犹豫什么,赶快拿起Git订购吧!

© 著作权归作者所有

赵晏龙
粉丝 17
博文 3
码字总数 4573
作品 0
常德
程序员
私信 提问
加载中

评论(19)

Z-kc
Z-kc

引用来自“张露兵”的评论

引用来自“hwxiang”的评论

哈哈,博主很是幽默啊!意淫和意会差别甚远啊!请问施主用的神马输入法!!!

认真你就输了。。。

笑而不语⊙ω⊙
Z-kc
Z-kc
擦,求种子!
赵晏龙
赵晏龙 博主

引用来自“蛮大人”的评论

引用来自“赵晏龙”的评论

引用来自“蛮大人”的评论

maven笑而不语

为什么要笑而不语呢亲?难道您觉得配置XML比点两下鼠标要简单?还是我的博文哪里有不对?

配置xml的话,maven及各种开源官方帮助提供了对应的依赖写法,并不是很繁琐。
另外我不认为点两下鼠标简单。
maven分享代码更方便。

嗯,总之从本质上两者是一样的。这里我也是提出一个思路。
蛮大人
蛮大人

引用来自“赵晏龙”的评论

引用来自“蛮大人”的评论

maven笑而不语

为什么要笑而不语呢亲?难道您觉得配置XML比点两下鼠标要简单?还是我的博文哪里有不对?

配置xml的话,maven及各种开源官方帮助提供了对应的依赖写法,并不是很繁琐。
另外我不认为点两下鼠标简单。
maven分享代码更方便。
蛮大人
蛮大人

引用来自“赵晏龙”的评论

引用来自“蛮大人”的评论

maven笑而不语

另外我这里只是给我另一个系列的博文做准备。

完全没有别的意思。
感谢作者的分享。只是个人感觉:
有maven,分享更happy;
我曾经在OSChina发布源程序共享,然后到stackoverflow提问,国内外都可以很轻松的下载和重新导入工程。很是方便。
maven更省心一些。完全不用担心依赖问题。
只是内网开发麻烦些,但是可以配置内网私服的。
我土鳖
撸主卖萌可耻……
赵晏龙
赵晏龙 博主

引用来自“penngo”的评论

一直只知java的maven,现在多知道一个net版的依赖包管理工具。

其实Java和.Net是差不多的,不过我更喜欢.Net的UI和一体化,让人更省心。
微笑的书生
微笑的书生

引用来自“hwxiang”的评论

哈哈,博主很是幽默啊!意淫和意会差别甚远啊!请问施主用的神马输入法!!!

认真你就输了。。。
penngo
penngo
一直只知java的maven,现在多知道一个net版的依赖包管理工具。
Qinworks
Qinworks
一直讨厌maven的繁琐臃肿。。。
项目协作管理--Mingle

Mingle 是关于项目的协作管理(非开源软件)。Mingle的独特之处以及它在敏捷项目管理和团队协作方面的强大功能包括: Mingle并不局限于敏捷方法论——它默认提供了三种软件开发模版(Scrum, ...

匿名
2008/11/10
6.9K
0
C++ 跨平台多功能扩展库 - cpgf

cpgf 可为C++代码增加反射(元数据)、序列化、以及Luau和Python脚本绑定等功能,且不依赖任何外部工具。 cpgf 的目标是扩展C++语言,其中包含许多易于使用的功能,这些功能仅在其他更高级别...

wqking
2018/09/17
0
0
大数据正在用5种酷炫方式改变你的生活

几个星期前,我写了一些关于小数据的大机会。虽然我对小数据的立场并没有改变,但在大数据领域也有一些令人非常兴奋和惊讶的事情正在发生。快速浏览整个商业环境,解释了一些强大的使用案例,...

勿忘初心321
2016/03/24
118
0
下一代 Web 弹窗 Layx v2.5.3 更新,大大提升窗口性能

她是谁 Layx 是面向Web的下一代弹窗组件。Gzip压缩版仅 13.5kb,非常小巧。 她体积小、无依赖、功能强、易拓展。 她拥有和C/S弹窗一样的体验,又兼容触摸屏手势操作。 她可能是目前互联网上功...

百小僧
2018/10/10
10.2K
41
来客电商

来客电商 项目介绍 非常惭愧地说,最开始是完全模仿着拼多多的功能模块来做这套系统,也仅仅是为了磨合团队,提高业务水平而已。 可谁知道,做完了拼团基本功能,还发现有评价没有做,好吧,...

沐零
2018/09/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

蚂蚁区块链BaaS:开放在云端,落地于实体

自 2018 年 6 月上线以来,蚂蚁区块链 BaaS 不断在技术上实现突破,形成自身独特的优势,并做为行业领军者在不同领域的几十个场景实现落地。在区块链的商用时代加速到来之际,通过开放自身的...

阿里云官方博客
26分钟前
3
0
Idea cannot access【好使】

Idea中无法访问类中public方法。。 解决: idea点击左下角电脑图标,打开右边栏各种功能键 右边栏Maven Projects中点一下刷新,就是那个两个蓝的箭头组成的环 ----------------------------...

Airship
27分钟前
3
0
Spark内置图像数据源初探

作者:林武康,花名知瑕, 阿里巴巴计算平台事业部EMR团队的高级开发工程师,Apache HUE Contributor, 参与了多个开源项目的研发工作,对于分布式系统设计应用有较丰富的经验,目前主要专注于...

阿里云云栖社区
27分钟前
1
0
【面试被虐】游戏中的敏感词过滤是如何实现的?

小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了以下事情的发生….. 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过...

爱编程的浪子
30分钟前
4
0
springboot之maven属性引入

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.7</version><configuration><delimiters><delimite......

Online_Reus
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部