使用Nuget管理第三方库吧

前言


  用visual studio开发的童鞋们应该都有这样的感受,经常在copy别人的项目后,出现找不到xxx.h,找不到xxx.lib,找不到balabala。甚至还有“模块计算机类型“x86”与目标计算机类型“x64”冲突”,“模块计算机类型“x64”与目标计算机类型“x86”冲突”,各种Link错误等等令人烦躁的提示!
  很多时候都是工程中使用了第三方库,而工程又没有能够自适应的配置文件能帮我们找到这些第三方库造成的,这时候需要程序员在C/C++ ->常规->附加包含目录添加各种头文件路径,链接器 -> 常规 -> 附加库目录 添加各种lib的路径,然后还需要在链接器 -> 输入 -> 附加依赖项填写工程中使用的lib名称。这已经足够烦人了,何况lib还要区分x86/x64,debug/release,vc平台(vc90,vc100 and etc.),排列组合大家都学过吧,这得配置多少次大家自己算吧。稍有不慎就会出错,如果是一个陌生的项目更大大增加出错可能,如果你忘记添加相应的lib而导致无法解析的外部符号,而恰恰你对这个外部符号很陌生并不知道它在哪个lib里,这就尴尬了。
  然而突然有一天,微软说我们做了个NuGet把Package 从工程中分离吧,以后它帮你管理Package 。图片名称

NuGet简介


  自从用了NuGet,妈妈再不用担心我找不到lib了。NuGet可以让我们的工作更方便,当我们的项目里要引用到的一些库时候,比如boost、OpenCV等,我们需要从网上下载这些库(有时还需要自己编译适合的版本),然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且会自动添加类库的相关引用,方便至极。同时把工程文件拷到另一台电脑或者别的同事时候也不用操心库的问题了,NuGet会重新恢复库,可以从Internet或者自己定义的路径恢复。

NuGet使用


  Visual studio 2010以前的版本需要自己安装NuGet扩展才能使用。在更新的Visual studio 2012以后的版本上,NuGet已经作为vs的一部分了。
  NuGet拥有控制台和图形界面两种操作方式,图形界面更傻瓜化,本文以图形界面作说明。

NuGet安装第三方packages


  可以单击Menu->Tools->NuGet Package Manager->Manage NuGet Packages for Solution,或者在解决方案的名称上右键选择Manage NuGet Packages for Solution,这时候打开的NuGet管理是为整个解决方案配置Packages。
这里写图片描述
  如果在工程名字上右键选择Manage NuGet Packages也可以打开NuGet管理界面,不过此时仅对所选的项目有效。
这里写图片描述

  打开之后,在左侧可以看到三个选项Installed packagesonlineupdate
  展开online可以从nuget.org上面下载安装自己需要的lib,当然也可以添加自己的源,这点和Linux平台上寻找依赖一样。如果当前的设置目标是整个解决方案,安装packages会对解决方案下所有工程有效,如果是从工程右键打开,则只对该工程有效。我们可以在每个工程下面找到一个packages.config的文件,打开可以看到当前工程使用了哪些库。可能看到的是如下形式:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="boost" version="1.59.0.0" targetFramework="Native" />
  <package id="boost_chrono-vc120" version="1.59.0.0" targetFramework="Native" />
  <package id="OpenCV" version="2.4.10" targetFramework="Native" />
</packages>

  作为演示,这里我们安装boost和OpenCV两个库。
这里写图片描述

  如果当前的设置目标是整个解决方案,那么展开Installed packages后,会有manage选项,可以为解决方案下的不同的工程定制个性化的packages,也就是解决方案下已经安装的packages在哪些工程中使用。如果是从工程名字右键打开的话,那么会有uninstall选项。
这里写图片描述

NuGet生成自定义


  仅仅下载安装还是不够,因为虽然现在磁盘上有我们需要的packages了,然而vs还是找不到啊。这时候需要选择Build Dependencies->Build Customizations
这里写图片描述
  打开之后,是一些自定义生成选项,我们需要自己添加OpenCV自定义文件OpenCV.props,这样vs就可以自己添加include路径,lib路径,添加相应的lib,而且自适应x86/x64,debug/release,vc平台。OpenCV.props一般放在\NugetPackages\OpenCV.2.4.10\build\native,其他的库类似。添加之后,还需要勾上才有效。
这里写图片描述

  至此,大功告成,再不需要C/C++ ->常规->附加包含目录添加各种头文件路径,不需要在链接器 -> 常规 -> 附加库目录 添加各种lib的路径,也不需要在链接器 -> 输入 -> 附加依赖项输入各种lib名字了。
  并且,工程拷贝到别的地方,或者给他人,也不用我们再折腾,NuGet可以恢复这些packages,找不到的他就会去下载,这里下载包括从nuget.org上下载也包括从自定义的路径寻找。

总结


  使用NuGet之后真,vs下开发真的变优雅了。这里写图片描述

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值