简介

在上一篇中,我为大家讲解了如何实现插件的安装,在文章的最后,留下了两个待解决的问题。

  • .NET Core 2.2中不能实现运行时删除插件
  • .NET Core 2.2中不能实现运行时升级插件

其实这2个问题归根结底其实都是一个问题,就是插件程序集被占用,不能在运行时更换程序集。在本篇中,我将分享一下我是如何一步一步解决这个问题的,其中也绕了不少弯路,查阅过资料,在.NET Core官方提过Bug,几次差点想放弃了,不过最终是找到一个可行的方案。

阅读更多

上一篇中,我们针对运行时启用/禁用组件做了一些尝试,最终我们发现借助IActionDescriptorChangeProvider可以帮助我们实现所需的功能。本篇呢,我们就来继续研究如何完成插件的安装,毕竟之前的组件都是我们预先放到主程序中的,这样并不是一种很好的安装插件方式。

阅读更多

在上一篇写完之后,我突然想到了一个问题,如果像前两篇所设计那个来构建一个插件式系统,会有一个很严重的问题,即

当你添加一个插件之后,整个程序不能立刻启用该插件,只有当重启整个ASP.NET Core应用之后,才能正确的加载插件。因为所有插件的加载都是在程序启动时ConfigureService方法中配置的。

这种方式的插件系统会很难用,我们期望的效果是在运行时动态启用和禁用插件,那么有没有什么解决方案呢?答案是肯定的。下面呢,我将一步一步说明一下自己的思路、编码中遇到的问题,以及这些问题的解决方案。

为了完成这个功能,我走了许多弯路,当前这个方案可能不是最好的,但是确实是一个可行的方案,如果大家有更好的方案,我们可以一起讨论一下。

阅读更多

在上一篇中,我们介绍了通过一个最简单了例子,给大家演示了一下,如何在ASP.NET Core Mvc中借助ApplicationPart来开发一个插件。在文章的最后,我们也提出了一些待解决的问题。

首先呢,第一个要解决问题是,每次我们创建一个新的插件,每次都要重新创建项目,添加类库引用,以及手动修改 csproj 文件,非常的繁琐。那么有没有一种方式可以减少这部分操作的?

回想一下,当我们每次使用 Visual Studio创建项目的时候,我们都可以选择一个项目模板,Visual Studio不仅可以根据我们选择的模板创建出项目,而且我们所需的程序集引用都会预先配置好,不需要我们重复配置了。那么我们是否可以自己创建一些模板呢?答案是肯定的。

本文中,我就来给大家演示一下,在如何为.NET Core项目创建项目模板,简化操作流程。

阅读更多

前言

如果你使用过CMS的话,肯定会用过一些CMS的插件化功能,用户可以通过上传插件包的方式动态启用一些功能,那么在ASP.NET Core MVC中如何实现插件化开发呢,下面我们来探究一下。

本系列只是笔者的一些尝试,并不表示一定正确,只是为了分享一些思路,大家可以一起讨论一下,后续会不断更新。

什么是ApplicationPart?

在ASP.NET Core中进行插件话开发,就不得不说ApplicationPartApplicationPart是ASP.NET Core一个重要组件,它是应用程序资源的一种抽象,通过它可以发现程序集中包含的控制器、视图组件、TagHelper和预编译Razor视图等MVC功能。

阅读更多

大家好,我是陆楠,来自北京盛安德青岛分公司,今年非常有幸作为讲师参加了微软Insider Dev Tour烟台站的活动,我主讲了如何使用最新的微软开发工具开发调试NodeJS项目。

与微软结缘

与大多数同龄人相比,我接触计算机要早一些,1994年我就已经开始使用计算机了,当时使用的电脑是一台486/80, 内存4MB, 硬盘258MB, 预装系统是DOS 6.22+Windows 3.2,第一次使用微软的Windows系统,真的是感觉相当酷炫,其体验不亚于第一次看《阿凡达》,直接颠覆了我对科技的认识。我第一次真正了解微软公司是通过1996年的创刊的《少年电脑世界》,其中有一期讲述了比尔盖茨和保罗艾伦的为8008 CPU编写basic解释程序赚到第一桶金,并收购交通数据公司,改名微软的故事,感觉非常的崇拜,从那以后我对编程产生了兴趣,走了上微软技术栈路线。

阅读更多

原文:How to Debug LINQ queries in C#
作者:Michael Shpilt
译文:如何在C#中调试LINQ查询
译者:Lamond Lu

在C#中我最喜欢的特性就是LINQ。使用LINQ, 我们可以获得一种易于编写和理解的简洁语法,而不是单调的foreach循环,它可以让你的代码更加美观。

但是LINQ也有不好的地方,就是调试起来非常难。我们无法知道查询中到底发生了什么。我们可以看到输入值和输出值,但是仅此而已。当代码出现问题的时候,我们只能盯着代码看吗?答案是否定的,这里有几种可以使用的LINQ的调试方法。

阅读更多

原文:https://www.jerriepelser.com/blog/restore-sql-database-localdb/
原文作者: Jerrie Pelser
译文:如何将Azure SQL Database还原到本地数据库中
译文作者: Lamond Lu

在本篇博文中,我将带你备份一个Azure SQL数据库,并使用SqlPackage工具将其还原到本地SQL Server实例中。

安装SqlPackage工具

在我们开始之间,你需要在本地安装SqlPackage工具。在我的演示实例中, 这个工具已经作为Visual Studio 2019的一个部件被安装了 ,所以我可以在C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150里面找到sqlpackage.exe工具。当然这可能和你本地环境不同,不过可以在相似的文件夹中找到它。

如果你找不到这个工具文件,你可以根据这篇文章下载并安装。

阅读更多

背景

最近在徒手造轮子,编写一个ASP.NET Core的日志监控器,其中用到了自定义中间件读取Request.Body和Response.Body的内容,但是编写过程,并不想想象中的一帆风顺,ASP.NET Core针对Request.Body和Response.Body的几个特殊设计,导致了完成以上功能需要绕一些弯路。

原始代码

为了读取Request.Body和Response.Body的内容,我的实现思路如下:

  • 创建一个LoggerMiddleware的中间件,将它放置在项目中间件管道的头部。因为根据ASP.NET Core的中间件管道设计,只有第一个中间件才能获取到原始的请求信息和最终的响应信息。
  • Request.Body和Response.Body属性都是Steram类型, 在LoggerMiddleware中间件的InvokeAsync方法中,我们可以分别使用StreamReader读取Request.Body和Response.Body的内容。

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×