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 ...
随机推荐
- 2055 [ZJOI2009]假期的宿舍
P2055 [ZJOI2009]假期的宿舍 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A ...
- 重构Web Api程序(Api Controller和Entity) 续篇(1)
经过一系列重构,你眼明的话,还是可以看到还有重构的地方,如: string newFileName = "~/Temp/" + Guid.NewGuid().ToString() ...
- Ruby中 使用Builder Xml Markup 操作XML
=begin Ruby中 使用Xml Markup 轻松的对XML文档操作, 项目地址:http://builder.rubyforge.org/ 使用之前我们需要安装Builder xml mark ...
- CentOs中mysql的安装与配置
在linux中安装数据库首选MySQL,Mysql数据库的第一个版本就是发行在Linux系统上,其他选择还可以有postgreSQL,oracle等 在Linux上安装mysql数据库,我们可以去其官 ...
- who命令的总结
who命令能做什么 who命令用来查看谁登录了系统(show who is logged on ): 每一行代表一个巳经登录的用户,第1列是用户名,第2列是终端名,第3列是登录时间. 通过whatis ...
- DevExpress中设置PanelControl背景的方法
首先当然是设置BackColor的颜色,但是设置完之后往往是没有反映的,这就Dev的好处带来的不好,然后我们需要自己定义两个属性 1.设置LookAndFeel下的style为Flat或UtralFl ...
- [CF #236 (Div. 2) E] Strictly Positive Matrix(强联通分量)
题目:http://codeforces.com/contest/402/problem/E 题意:给你一个矩阵a,判断是否存在k,使得a^k这个矩阵全部元素都大于0 分析:把矩阵当作01矩阵,超过1 ...
- P值,“差异具有显著性”和“具有显著差异”
P值是论文中最常用的一个统计学指标,可是其误用.解释错误的现象却很常见.因此,很有必要说明p值的意义.用法及常见错误. P值指的是比较的两者的差别是由机遇所致的可能性大小.P值越小,越有理由认 ...
- C++ vector用法
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<in ...
- strut2的拦截器之对request和session的封装
本文主要内容是对 implements Interceptor 这种方式的探索 前提是需要了解:责任链模式 对下面这句代码的理解: Map<String, Object> session ...