会有这样一种情况:在同一个解决方案下面,类库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多个项目依赖的公共组件如何打包的更多相关文章

  1. webpack 多页面支持 & 公共组件单独打包

    webpack - 多页面/入口支持 & 公共组件单独打包 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 we ...

  2. webpack 多页面|入口支持和公共组件单独打包--转载

    转载自:http://www.jb51.net/article/117490.htm 本篇主要介绍:如何自动构建入口文件,并生成对应的output:公共js库如何单独打包. 多入口文件,自动扫描入口. ...

  3. 使用了旧版nuget的.net项目在git中的问题

    曾几何时,使用nuget包管理项目依赖还需要将nuget执行程序及其配置文件包含在项目中. 如上图所示,在解决方案文件夹中,有专门为nuget程序设置的 .nuget 子目录. 当将项目纳入git管理 ...

  4. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之 Http 请求客户端

    一个技术汪的开源梦 —— 目录 想必大家在项目开发的时候应该都在程序中调用过自己内部的接口或者使用过第三方提供的接口,咱今天不讨论 REST ,最常用的请求应该就是 GET 和 POST 了,那下面开 ...

  5. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构

    一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...

  6. Net Core 的公共组件之 Http 请求客户端

    Net Core 的公共组件之 Http 请求客户端 想必大家在项目开发的时候应该都在程序中调用过自己内部的接口或者使用过第三方提供的接口,咱今天不讨论 REST ,最常用的请求应该就是 GET 和 ...

  7. CRM项目之RBAC权限组件-day26

    写在前面 上课第26天,打卡: 世间安得双全法 不负如来不负卿 s17day26 CRM项目 项目概要:XX公司CRM - 权限管理,公共组件,app ***** - 熟悉增删改查,Low *** - ...

  8. springcloud(四):Eureka客户端公共组件打包方式

    ,      一.前言  各位大佬应该知道,在大型项目中都需要有数据传输层,一般项目都采用的是MVC结构,如果有10个表,则会创建10个实体类,在各个层之间应该使用实体类传递数据: 在微服架构中,也许 ...

  9. 公共组件及脚手架webpack模板

    一.公共组件的创建和使用 前面已经学习vue组件时,了解了公共组件,但在脚手架项目中只使用过局部组件.这里是讲解全局组件如何在脚手架项目中去使用. 1.创建全局组件 在src/components/C ...

随机推荐

  1. Burndown chart

    S型的燃尽图 在一次milestone开发过程中,开发者会持续编辑issue列表,每个issue都有自己的生命周期.燃尽图预期这些issues会被线性的消灭掉,所以从第一天直接到最后一天画个直线表示预 ...

  2. sql server利用开窗函数over() 进行分组统计

    这是一道常见的面试题,在实际项目中经常会用到. 需求:求出以产品类别为分组,各个分组里价格最高的产品信息. 实现过程如下: declare @t table( ProductID int, Produ ...

  3. 详解c++指针的指针和指针的引用

    展示一下使用指针的指针和指针的引用修改传递给方法的指针,以便更好的使用它.(这里说的指针的指针不是一个二维数组) 为什么需要使用它们 当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方 ...

  4. 【前端也要学点算法】快速排序的JavaScript实现

    作为算法目录下的第一篇博文,快速排序那是再合适不过了.作为最基本最经典的算法之一,我觉得每个程序员都应该熟悉并且掌握它,而不是只会调用库函数,知其然而不知其所以然. 排序算法有10种左右(或许更多), ...

  5. TensorFlow的开源与Hadoop的开源

    最近看TensorFlow代码的时候,用Git pull下来最新的master一看,哇好多的更新,然后点击去之前看到一半的cc文件继续看,好多地方都改变了.但是一看Git log,有好多巨大的comm ...

  6. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

    简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...

  7. 开发WP版本的大菠萝英雄榜

    前言 想当年Team有无数人在玩大菠萝,我被忽悠进来做肉盾,选了蛮子,从1.0开始,经历了103.105.108.2.0.2.1.这个游戏对我最大的帮助是学习了不同的技术,比如XAML.比如xcode ...

  8. Codeforces Round #370(div 2)

    A B C :=w= D:两个人得分互不影响很关键 一种是f[i][j]表示前i轮,分差为j的方案数 明显有f[i][j]=f[i-1][j-2k]+2*f[i-1][j-2k+1]+...+(2k+ ...

  9. SqlServer——全文索引

    当我们想要模糊查询时,之前用like %来进行查询,但是为了提高查询速度,提出了全文索引. 全文索引是用空间换取了时间,它将每个表中的数据进行切分存储,这样就能很快的定位到模糊查询的数据. 全文索引快 ...

  10. Install Sogoupinyin in Ubuntu

    If you use Ubuntu 15.10,search 'sogou' in Software Center.If you can see sogoupinyin there.You can g ...