NuGet多个项目依赖的公共组件如何打包
会有这样一种情况:在同一个解决方案下面,类库A是独立的,类库B是依赖于类库A的;类似这样:

所以在使用类库B时必须引入类库A的东西,这时如果作为nuget包打包发布,有如下的解决思路:
1、在整个解决方案上的引用上全部依托nuget进行引入,比如类库A开发好之后,直接打包发布到官网,然后类库B要依赖类库B的时候,直接用nuget安装类库A;那么这时项目上就会多出packages.config的文件,当我们打包类库B时,用命令行直接打包会带上这些依赖,非常方便的包含进去了。当我们在官网下载类库B安装时,会自动的安装上类库A。但这样的方式也有非常不好的一个特点:就是项目联调时无法断点跟踪成了一种难题(可能存在的几种情况,也是不推荐的:①带上pdb文件。②使用symbols服务器,小类库真没必要),尤其是解决方案上自带了单元测试的项目,也是非常痛苦的!
2、类库B还是同样的老方式引用类库A,那么用nuget打包时就要这样处理,先用spec参数生成nuspec文件,然后编辑里面的文件,加上类库A的引用依赖。这样一来,再使用pack进行打包时也能达到第1种的效果。缺点:多了一个配置文件要进行编辑,也多了一步的命令行操作,对于自动化的批处理操作不太合适。优点:断点跟踪,单元测试断点跟踪一目了然,方便调试。
3、这种是一种投机取巧的方式,项目上还是这样操作:类库B还是同样的老方式引用类库A,类库A编译好并发布到官网上,然后再类库B上新建一个packages.config或者在原有的packages.config文件上加入要引入类库A的ID和版本号。我这里不直接使用nguet的管理器进行安装,而是手动写入到packages.config文件,好处是不会直接引用,关系还是在的,只不过是用pack参数打包时能自动引入类库A的依赖;同时这样的好处也非常明显,不用维护nuspec文件,一条命令行打包自带依赖关系,同时也方便调试和单步跟踪,也不破坏项目之间的引入关系。(推荐使用这个),这一步还有一个关键点:有了packages.config文件之后,一定要把全部包含在配置文件的包全部下载完之后,即包都在packages文件夹中这个办法才生效。
注意:
这里的nuget官网是:http://nuget.org,如果你有内部服务器也可以是自动的内部服务器,内部服务器对于第2部的symbols的调试也是可以的,但不推荐用symbols的形式去调试公共库,业务项目就推荐用symbols。
NuGet多个项目依赖的公共组件如何打包的更多相关文章
- webpack 多页面支持 & 公共组件单独打包
webpack - 多页面/入口支持 & 公共组件单独打包 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 we ...
- webpack 多页面|入口支持和公共组件单独打包--转载
转载自:http://www.jb51.net/article/117490.htm 本篇主要介绍:如何自动构建入口文件,并生成对应的output:公共js库如何单独打包. 多入口文件,自动扫描入口. ...
- 使用了旧版nuget的.net项目在git中的问题
曾几何时,使用nuget包管理项目依赖还需要将nuget执行程序及其配置文件包含在项目中. 如上图所示,在解决方案文件夹中,有专门为nuget程序设置的 .nuget 子目录. 当将项目纳入git管理 ...
- 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之 Http 请求客户端
一个技术汪的开源梦 —— 目录 想必大家在项目开发的时候应该都在程序中调用过自己内部的接口或者使用过第三方提供的接口,咱今天不讨论 REST ,最常用的请求应该就是 GET 和 POST 了,那下面开 ...
- 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构
一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...
- Net Core 的公共组件之 Http 请求客户端
Net Core 的公共组件之 Http 请求客户端 想必大家在项目开发的时候应该都在程序中调用过自己内部的接口或者使用过第三方提供的接口,咱今天不讨论 REST ,最常用的请求应该就是 GET 和 ...
- CRM项目之RBAC权限组件-day26
写在前面 上课第26天,打卡: 世间安得双全法 不负如来不负卿 s17day26 CRM项目 项目概要:XX公司CRM - 权限管理,公共组件,app ***** - 熟悉增删改查,Low *** - ...
- springcloud(四):Eureka客户端公共组件打包方式
, 一.前言 各位大佬应该知道,在大型项目中都需要有数据传输层,一般项目都采用的是MVC结构,如果有10个表,则会创建10个实体类,在各个层之间应该使用实体类传递数据: 在微服架构中,也许 ...
- 公共组件及脚手架webpack模板
一.公共组件的创建和使用 前面已经学习vue组件时,了解了公共组件,但在脚手架项目中只使用过局部组件.这里是讲解全局组件如何在脚手架项目中去使用. 1.创建全局组件 在src/components/C ...
随机推荐
- Scrapy 爬虫
Scrapy 爬虫 使用指南 完全教程 scrapy note command 全局命令: startproject :在 project_name 文件夹下创建一个名为 project_name ...
- img加载在IE11,chrome,FF下的不同
IE11 img.complete 得不到img的大小,会使用img.onload chrome,ff:img.complete 得不到img的大小,会使用自己创建的img加载方法
- IntelliJ IDEA 13试用手记(附详细截图)
从去年开始转java以来,一直在寻找一款趁手的兵器,eclipse虽然是很多java程序员的首选,但是我发现一旦安装了一些插件,workspace中的项目达到数10个以后,经常崩溃,实在影响编程的心情 ...
- 韩国网页设计资料《网页设计大师2》JPG+PSD+TXT等 73.89G 百度云下载
< 网页设计大师2 >超越第一代版本,提供更新更精美的网页素材模板.全部由国际顶级设计师精选打造,完全展示走在潮流 之前的设计风格.是网页设计师/UI交互界面设计师必备工具. < 网 ...
- leetcode - 位运算题目汇总(下)
接上文leetcode - 位运算题目汇总(上),继续来切leetcode中Bit Manipulation下的题目. Bitwise AND of Numbers Range 给出一个范围,[m, ...
- node 学习笔记 - Modules 模块加载系统 (1)
本文同步自我的个人博客:http://www.52cik.com/2015/12/11/learn-node-modules-path.html 用了这么久的 require,但却没有系统的学习过 n ...
- 此utf8 非彼utf8 ——谈http协议里的编码问题
我这里看两个编码: BDPAGETYPE:2BDQID:0xc92b034d0bc985e8BDUSERID:809441751 Cache-Control:private Connection:Ke ...
- 【python游戏编程之旅】第七篇---pygame中的冲突检测技术
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中的Sprite模块和如何加载动画:http://www.cnblogs ...
- 【活动】写#听云#原创博文 赢取iPhone 6超级大奖
移动应用的使用量和重要性与日俱增,用户体验的要求也越来越高.与桌面程序相比,移动应用耗电小,速度慢,但手机用户却希望享受到与桌面程序同样的加载速度.那么如何发现移动应用的性能黑洞,优化移动应用性能,这 ...
- WebApiTestClient自定义返回值说明
WebApiTestClient是基于微软HelpPage一个客户端调试扩展工具,用来做接口调试比较方便.但是对返回值的自定义说明还是有缺陷的.有园友写过一篇文章,说可以通过对类进行注释,然后通过在I ...