会有这样一种情况:在同一个解决方案下面,类库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. LINQ 常见用法

    以下数据源都假设为data 1.获取某列的不重复数据 List<int> ids =  data.Select(t => t.ID).Distinct().ToList(); 2.对 ...

  2. Windows 8.1 新增控件之 TimePicker

    之前已经为大家介绍过DatePicker 控件的相关内容,有日期控件当然就得有时间控件,本篇将和各位一起了解TimePicker 的使用方法. 先来介绍一下ClockIdentifier 属性,默认情 ...

  3. 杭电1008 Elevator

    #include <stdio.h> #include <stdlib.h> int main() { int n; int i,j; int num[101]; while( ...

  4. Silverlight:针式打印机文字模糊的改善办法

    SL的打印功能,如果使用针式打印机,打出来的字很模糊,网上有一些文章介绍应该使用"Arial,SimSun"(即:宋体),但实际测试的结果,宋体依然很模糊. 下面是各种字体的测试: ...

  5. [MetaHook] BaseUI hook

    Hook IBaseUI function. #include <metahook.h> #include <IBaseUI.h> IBaseUI *g_pBaseUI = ; ...

  6. <实训|第十二天>用LVM对linux分区进行动态扩容

    [root@localhost~]#序言在linux中,我们安装软件的途径一般有那些,你们知道吗?在linux中,如果你的磁盘空间不够用了,你知道如何来扩展磁盘吗?动态扩容不仅在工作中还是在其他方面都 ...

  7. IDEA【 MyBatis Plugin】 插件免费完美运行

    mybatis_plus.jar 包 .Install plugin from disk...导入即能用. BaiDu云: 链接: http://pan.baidu.com/s/1geKtTbP 密码 ...

  8. ModernUI教程:如何从MUI样式中派生自定义样式

    下面的步骤用来说明怎么样去创建一个基于MUI的自定义样式.让我们创建一个字体颜色显示为红色的按钮样式. 可视化显示如下: 因为我们并没有明确生命继承自MUI风格,它还是采用WPF的默认风格.我们需要设 ...

  9. SDRAM读写一字(下)

    SDRAM读写一字 SDRAM控制模块 上电后进行初始化状态,初始化完成后进入空闲状态,在此进行判断如下判断: 如果自刷新时间到,则进行自刷新操作,操作完成后重新进入空闲状态: 如果读使能有效则进行读 ...

  10. display:block、display:inline与displayinline:block的概念和区别

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...