ABP入门系列(12)——如何升级Abp并调试源码

1. 升级Abp

本系列教程是基于Abp V1.0版本,现在Abp版本已经升级至V1.4.2,其中新增了New Feature,并对Abp做了相应的Enhancements,以及Bug fixs。现在我们就把它升级至最新版本,那如何升级呢?
下面就请按我的步骤来将Abp由V1.0升级至V1.4.2

1.1. 过滤Abp Nuget包

VS打开解决方案文件,右键解决方案(不是某个项目),选中【管理解决方案的Nuget程序包(N)...】,如下图1.1。

图1.1

从图中可以看到,VS智能提示有42个Nuget包可升级,其中有2个Nuget程序包可合并。看到这个,不要犯了强迫症,就全部更新合并。
要知道,Nuget程序包是相互依赖的,不一定最新的就能相互兼容。
所以这一次,我们保险起见,只升级Abp相关Nuget程序包。
选中【更新】,在搜索框中录入Abp进行筛选Abp相关Nuget程序包(一共16个)。

1.2. 更新Abp相关Nuget包

勾选【选择所有的包】,并点击【更新】。VS会去分析解决方案下每个工程的Nuge包的依赖项,如下图1.2。

 

图1.2

 

分析完毕后,弹出分析结果,即每个工程将要更新哪些Nuget包,如图1.3。

图1.3

从图中可以发现,不仅仅是更新了Nuget包,依赖的相关包也将自动更新。
毫无疑问,点击【确定】,紧接着会弹出一个【接受许可证】,如图1.4,点击【我接受】。

 

图1.4

观察输出窗口,发现VS已经开始下载要更新的Nuget包并安装,如图1.5。

图1.5

因为Abp V1.4.2已经支持TypeScript,VS解析到需要安装TypeScript,弹出图1.6所示对话框。

图1.6

点【是】进入下一步。稍等2分钟,即可成功安装,如图1.7。

图1.7

1.3. 编译项目

编译项目,报了一堆错误,如图1.8。

 

图1.8

第一个错误好解决,是我们扩展AbpSesion出的错误。定位一看,原来是Abp修改了默认IAbpSession的实现类ClaimsAbpSession。我们只需要删除报错的构造方法,按下面方式更改即可:

public AbpSessionExtension(IPrincipalAccessor principalAccessor, IMultiTenancyConfig multiTenancy,ITenantResolver tenantResolver, IAmbientScopeProvider<SessionOverride> sessionOverrideScopeProvider): base(principalAccessor, multiTenancy, tenantResolver, sessionOverrideScopeProvider){}

接下来的错误都是Typescript报的错,需要安装下TypeScript。

1.4. 安装TypeScript

依次点击【工具-->扩展和更新-->联机】,在右边搜索框中搜索typescript,并按【最新】排序,搜索结果如图1.9。选择最新版本下载后,关闭VS,安装即可。

图1.9

1.5. 运行Web项目

重新编译下,Ctrl+F5运行web项目,报错如图2.0。

 

图2.0


按照图示所言,修改web.config中的customErrors节点为Off,<customErrors mode="Off" />。重新运行Web项目,报错如图2.1。

图2.1

 

一看是 EntityFramework.DynamicFilters相关错误,这个是一个第三方Nuget包,用来支持EF进行Linq动态过滤的。猜到一种可能是升级后的DynamicFilters删除了图中的扩展方法,导致出错。到abp官方github上的项目上根据关键字搜索Issue,如图2.2。

 

图2.2

果然大家跟我们报的一样的错,其中已经给出了解决方案,需要将DynamicFilterNuget包降级到1.4.11。

右键解决方案,选择【管理解决方案的Nuget程序包(N)...】,在搜索框中输入 【EntityFramework.DynamicFilters】过滤,并选中依赖的项目,在版本下拉框中选择1.4.11,点击安装,如图2.3。

图2.3

重新编译,再次启动web项目,还是报错,如图2.4。

图2.4

是不是快崩溃了,别怕,跟着我做,让你气死回生。
分别定位到依赖EntityFramework.DynamicFilters组件的项目,修改App.Config或Web.Config,找到以下节点:

<dependentAssembly><assemblyIdentity name="EntityFramework.DynamicFilters" publicKeyToken="146423a1b8d60775" culture="neutral" /><bindingRedirect oldVersion="0.0.0.0-2.3.0.0" newVersion="2.3.0.0" />
</dependentAssembly>

是不是吐血,降级后,VS没有更改依赖组件的版本。修改如下:

<dependentAssembly><assemblyIdentity name="EntityFramework.DynamicFilters" publicKeyToken="146423a1b8d60775" culture="neutral" /><bindingRedirect oldVersion="0.0.0.0-1.4.11" newVersion="1.4.11" />
</dependentAssembly>

修改完毕后,重新编译,启动web项目,这一次终于显示久违的登陆界面,预示着这次升级折腾结束了。

 

有了这次升级折腾经验,下次我想咱就不怕了。

2. 调试源码

按照作者的官方如何调试的文档介绍Debuging,所有官方ASP.NET Boilerplate nuget包都启用了GitLink。这意味着您可以轻松地在项目中调试Abp.* nuget包。
但是由于GitLink暂不支持 xproj/project.json格式,所以我们暂时用不了GitLink进行调试。

这里另外提供一种调试的方式:

2.1. 下载与本地模板项目版本一致的Abp源码

首先去看看Abp的Releases目录,找到对应版本的Source code.zip,下载即可。

2.2. 还原Nuget包

打开下载下来的源码解决方案,右键解决方案,选择还原Nuget包。还原成功后,重新编译项目。
然后把需要调试的dll文件拷贝到自己的模板项目中的web项目的Bin目录下。

2.3. 附加进程调试

Ctrl+F5运行web项目,然后在源码对应解决方案,选择【调试-->附加到进程】,从进程列表中,选择【iisexpress.exe】进程附加即可。打个断点,就可以调试了。

 

6人点赞

 

Abp架构入门系列

 



作者:圣杰
链接:https://www.jianshu.com/p/ae4fb0c7493d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚类分析在用户行为中的实例_看完这篇,你还敢说不懂聚类分析?

点击上方蓝色字关注我们~大数据分析中的应用&#xff0c;最常用的经典算法之一就是聚类法&#xff0c;这是数据挖掘采用的起步技术&#xff0c;也是数据挖掘入门的一项关键技术。什么是聚类分析&#xff1f;聚类分析有什么用&#xff1f;聚类算法有哪些&#xff1f;聚类分析的应…

ABP入门系列(13)——Redis缓存用起来

1. 引言 创建任务时我们需要指定分配给谁&#xff0c;Demo中我们使用一个下拉列表用来显示当前系统的所有用户&#xff0c;以供用户选择。我们每创建一个任务时都要去数据库取一次用户列表&#xff0c;然后绑定到用户下拉列表显示。如果就单单对一个demo来说&#xff0c;这样实…

ABP入门系列(14)——应用BootstrapTable表格插件

1. 引言 之前的文章ABP入门系列&#xff08;7&#xff09;——分页实现讲解了如何进行分页展示&#xff0c;但其分页展示仅适用于前台web分页&#xff0c;在后台管理系统中并不适用。后台管理系统中的数据展示一般都是使用一些表格插件来完成的。这一节我们就使用BootstrapTab…

musictools怎么用不了_夏天少不了一只草编包,怎么搭配才不像“买菜用”?

要说有什么包包能跟夏天的气息一拍即合&#xff0c;那绝对非“草编包”莫属&#xff01;由藤条、柳条等编制而成的田园风“小篮子”&#xff0c;已经成了夏日街头小姐姐们的包包首选。各大品牌都争相推出草编包系列&#xff0c;在原有的浪漫度假风之外&#xff0c;添加了更多时…

ABP入门系列(15)——创建微信公众号模块

1. 引言 现在的互联网已不在仅仅局限于网页应用&#xff0c;IOS、Android、平板、智能家居等平台正如火如荼的迅速发展&#xff0c;移动应用的需求也空前旺盛。所有的互联网公司都不想错过这一次移动浪潮&#xff0c;布局移动市场分一份移动红利。 的确&#xff0c;智能手机作…

spark 算子例子_Spark性能调优方法

公众号后台回复关键词&#xff1a;pyspark&#xff0c;获取本项目github地址。Spark程序可以快如闪电⚡️&#xff0c;也可以慢如蜗牛?。它的性能取决于用户使用它的方式。一般来说&#xff0c;如果有可能&#xff0c;用户应当尽可能多地使用SparkSQL以取得更好的性能。主要原…

ABP入门系列(16)——通过webapi与系统进行交互

1. 引言 上一节我们讲解了如何创建微信公众号模块&#xff0c;这一节我们就继续跟进&#xff0c;来讲一讲公众号模块如何与系统进行交互。 微信公众号模块作为一个独立的web模块部署&#xff0c;要想与现有的【任务清单】进行交互&#xff0c;我们要想明白以下几个问题&#x…

python嵩天第二版第五章_如何避免从入门到放弃——python小组学习复盘

2019年春节python学习行动复盘2019-02-09为了主攻python&#xff0c;没有参加心理学晨读。对心理学也不敢兴趣&#xff0c;怕耽误学习python的时间。那么没学习心理学的情况下&#xff0c;python学的怎么样&#xff1f;是否达到自己的预期&#xff1f;一、预期目标&#xff1a;…

ABP入门系列(17)——使用ABP集成的邮件系统发送邮件

1.Abp集成的邮件模块是如何实现的 ABP中对邮件的封装主要集成在Abp.Net.Mail和Abp.Net.Mail.Smtp命名空间下&#xff0c;相应源码在此。 分析可以看出主要由以下几个核心类组成&#xff1a; EmailSettingNames&#xff1a;静态常量类&#xff0c;主要定义了发送邮件需要的相关…

cdn转发防攻击_高防CDN和高防服务器的区别?

越来越多的网络攻击需要处理&#xff0c;而高防CDN和高防服务器是很好的选择&#xff0c;那么如何选择呢&#xff1f;我们就来分析一下关于这两者之间的选择。首先从价格上看的话&#xff0c;高防御CDN的价格相对高一些&#xff0c;防御上看&#xff0c;高防御CDN的防御效果也更…

ABP入门系列(18)—— 使用领域服务

1.引言 自上次更新有一个多月了&#xff0c;发现越往下写&#xff0c;越不知如何去写。特别是当遇到DDD中一些概念术语的时候&#xff0c;尤其迷惑。如果只是简单的去介绍如何去使用ABP&#xff0c;我只需参照官方文档&#xff0c;实现到任务清单Demo中去就可以了&#xff0c;…

mysql文件类型_MyCat教程:实现MySql主从复制

原文&#xff1a;http://iii75.cn/mwQhBW 作者&#xff1a;波波烤鸭历史相关文章Mycat入门教程单个mysql数据库在处理业务的时候肯定是有限的&#xff0c;这时我们扩展数据库的第一种方式就是对数据库做读写分离(主从复制),本文我们就先来介绍下怎么来实现mysql的主从复制操作。…

截屏当前界面_电脑屏幕怎么截取,常见的几种电脑截屏方法

随着科技的快速发展电脑已经逐渐渗入到我们的工作和生活中&#xff0c;我们需要使用电脑的地方也越来越多&#xff0c;电脑已经成为了一种新式的办公工具。今天小编不是向大家介绍电脑的应用&#xff0c;而是想要和大家分享一下关于电脑截图的几种方法。1、Print Screen SysRqP…

ABP入门系列(19)——使用领域事件

1.引言 最近刚学习了下DDD中领域事件的理论知识&#xff0c;总的来说领域事件主要有两个作用&#xff0c;一是解耦&#xff0c;二是使用领域事件进行事务的拆分&#xff0c;通过引入事件存储&#xff0c;来实现数据的最终一致性。若想了解DDD中领域事件的概念&#xff0c;可参…

扩容是元素还是数组_Java中对数组的操作

数组对于每一门编程语言来说都是重要的数据结构之一&#xff0c;当然不同语言对于数组的实现及处理也不尽相同。Java语言中提供的数组是用来存储固定大小的同类型元素。如&#xff1a;声明一个数组变量&#xff0c;numbers[100]来代替直接声明100个独立变量number0,number1,...…

ABP入门系列(20)——使用后台作业和工作者

1.引言 说到后台作业&#xff0c;你可能条件反射的想到BackgroundWorker&#xff0c;但后台作业并非是后台任务&#xff0c;后台作业用一种队列且持久稳固的方式安排一些待执行后台任务。 为执行长时间运行的任务而用户无需等待&#xff0c;以提高用户体验。为创建可重试且持…

加载中_GIS地图在项目中的加载显示

下面我们就来说说如何在应用程序中加载显示GIS地图&#xff0c;首先我们在SuperMap iDesktop 9D(10i)中编辑好我们需要的地图&#xff0c;如下图所示&#xff1a;如上图所示&#xff0c;这是我编辑好的一幅天河区的地图&#xff0c;下面我就以这幅地图为例来说说如何把这样一幅…

ABP入门系列(21)——切换MySQL数据库

1. 引言 Abp支持MySql已经不是什么新鲜事了&#xff0c;但按照官方文档&#xff1a;Entity Framework - MySql Integration来&#xff0c;你未必能成功切换&#xff0c;本文就记录下切换MySql数据库遇到的一些坑&#xff0c;供后人乘凉&#xff01; 2. 环境准备 MySql数据库…

ABP开发框架前后端开发系列---(1)框架的总体介绍

ABP是ASP.NET Boilerplate的简称&#xff0c;ABP是一个开源且文档友好的应用程序框架。ABP不仅仅是一个框架&#xff0c;它还提供了一个最徍实践的基于领域驱动设计(DDD)的体系结构模型。学习使用ABP框架也有一段时间了,一直想全面了解下这个框架的整个来龙去脉&#xff0c;并把…

c++ pdflib输出表格_DescrTab2包,输出SCI级别的描述统计表

今天浏览R包&#xff0c;发现一个不错的包——DescrTab2包。看R包介绍&#xff0c;这个包可以绘制出版物质量级别的描述统计表。看起来很不错。下面来学习下。1. R包安装和加载install.packages("DescrTab2") # 安装包library(DescrTab2) # 加载包2. 加载演示数据集l…