随笔分类 - .NET Core
摘要:前几天,一位网友跟我说他编写的一段很简单的代码遇到了奇怪的Bug,他要达到的效果是从一个List中随机取出来一条数据,代码如下: 1 var random = new Random(); 2 var users = Enumerable.Range(0, 10).Select(p => new Us
阅读全文
摘要:因为之前的版本中,EF Core无法实现高效地批量插入、修改、删除数据,所以我开发了Zack.EFCore.Batch这个开源项目,比较受大家的欢迎,获得了400多个star。 从.NET 7开始,微软在Entity Framework Core 7内置了对高效地批量修改、删除数据的支持,详细请见这
阅读全文
摘要:经常看到有群友调侃“为什么搞Java的总在学习JVM调优?那是因为Java烂!我们.NET就不需要搞这些!”真的是这样吗?今天我就用一个案例来分析一下。 昨天,一位学生问了我一个问题:他建了一个默认的ASP.NET Core Web API的项目,也就是那个WeatherForecast的默认项目模
阅读全文
摘要:我的“新”书《ASP.NET Core技术内幕与项目实战》已经在7月份就出版了,不过恰逢我这几个月一直很忙,所以一直没宣传,特别是这个公众号我都没发过一次。就把这次当成一个正式的通知吧。 可以点击下面链接直接购买,也可以去京东、淘宝、当当等去搜,只要记住不要去拼夕夕就行了。 1)人民邮电出版社京东店
阅读全文
摘要:在领域驱动设计(DDD)中,有一个非常重要的概念:“强类型Id”。使用强类型Id来做标识属性的类型会比用int、Guid等通用类型能带来更多的好处。比如有一个根据根据Id删除用户的方法的签名如下: void RemoveById(long id); 我们从方法的参数看不出来id代表什么含义,因此如果
阅读全文
摘要:2022年11月11日晚上19:00-20:00(北京时间),我将会通过哔哩哔哩平台直播,为大家分享我对Microsoft Ignite 2022大会中.NET相关的一些内容的看法,并和大家直播互动。 内容大纲: 1)《Hidden gems and live coding with .NET 7》
阅读全文
摘要:预计在2022年6月1日晚上8:00,我将会通过哔哩哔哩平台直播,为大家分享我对Microsoft Build大会中.NET相关的一些内容的看法,并和大家直播互动。 Microsoft Build大会具体日程还没发布,等它发布之后,我会给大家列出来我要分享的视频。 我的哔哩哔哩地址:https://
阅读全文
摘要:十天前,我发布了对.NET Core程序进行瘦身的开源软件Zack.DotNetTrimmer,与.NET Core内置的剪裁器相比,Zack.DotNetTrimmer不仅对程序的剪裁效果更好,而且还支持WPF、WinForm程序。 很多朋友对于这个开源项目的原理很感兴趣,因此我将通过这篇文章为大
阅读全文
摘要:上周,我发布了对.NET Core程序进行瘦身的开源软件Zack.DotNetTrimmer,与.NET Core内置的剪裁器相比,Zack.DotNetTrimmer不仅对程序的剪裁效果更好,而且还支持WPF、WinForm程序。下面是Zack.DotNetTrimmer与.NET内置的剪裁器的对
阅读全文
摘要:一、为什么要开发.NET Core程序瘦身器? .NET Core具有【剪裁未使用的代码】的功能,但是由于它是使用静态分析来实现的,因此它的剪裁效果并不是最优的。它有如下两个缺点: 不支持Windows Forms和WPF,而对于程序剪裁功能需求最强烈的其实反而是桌面程序的开发者。 无法删除运行时没
阅读全文
摘要:为了避免运行时编译cshtml造成的性能问题,ASP.NET Core MVC项目在发布的时候默认会把cshtml文件编译到dll中,但是有的项目希望能在运行时修改cshtml视图文件。网上有文章讲到过在csproj文件中添加false等方式来修改这个默认的行为,但是那些做法都是旧版.net cor
阅读全文
摘要:在编写.NET程序的时候,如果需要对一个程序集文件进行分析,我们可以使用Assembly.LoadFile()来加载这个程序集,然后对LoadFile()方法返回的Assembly对象进行进一步的分析。但是Assembly.LoadFile()方法会以执行为目的把程序集加载到程序中,因此它对于被加载
阅读全文