.NET
文章平均质量分 75
杨中科
这个作者很懒,什么都没留下…
展开
-
你真的知道吗?catch、finally和return哪个先执行
因此,无论是throw异常的时候还是return返回值的时候,被调用的方法只是把异常对象或者返回值放到了这个特定的位置,在return或者throw执行之后,如果方法中还有finally等没有执行完成的代码,那么这些代码仍然会在return、throw之后继续执行,然后方法执行才会结束,之后调用这个方法的代码才会从Stack Frame中读取到返回值或者获取到被调用的方法抛出的异常对象。上面程序执行结果是“bb”。接下来,我们再来捉弄一下方法的返回值,我们尝试在finally代码块中修改方法的返回值。原创 2023-08-02 06:04:27 · 159 阅读 · 0 评论 -
不用Blazor WebAssembly,开发在浏览器端编译和运行C#代码的网站
我将会为大家分享一个如何用.NET技术开发“在浏览器端编译和运行C#代码的工具”,核心的技术就是用C#编写不依赖于Blazor框架的WebAssembly以及Roslyn技术。原创 2023-02-10 06:38:58 · 694 阅读 · 1 评论 -
天坑,这样一个lambda随机取数据也有Bug
这段代码有的时候运行正常,有的时候则会断言失败,从而程序抛出异常,令人不解。原创 2022-12-07 06:21:03 · 210 阅读 · 0 评论 -
Entity Framework Core 7中高效地进行批量数据插入
因为之前的版本中,EF Core无法实现高效地批量插入、修改、删除数据,所以我开发了Zack.EFCore.Batch这个开源项目,比较受大家的欢迎,获得了400多个star。现在支持.NET 7了原创 2022-12-01 10:24:10 · 1773 阅读 · 0 评论 -
谁说.NET没有GC调优,只改一行代码就让程序不再占用内存
经常看到有群友调侃“为什么搞Java的总在学习JVM调优?那是因为Java烂!我们.NET就不需要搞这些!”真的是这样吗?今天我就用一个案例来分析一下。原创 2022-11-30 08:00:00 · 311 阅读 · 1 评论 -
两步开发.NET Core剪裁器,并且开源它
十天前,我发布了对.NET Core程序进行瘦身的开源软件Zack.DotNetTrimmer,与.NET Core内置的剪裁器相比,Zack.DotNetTrimmer不仅对程序的剪裁效果更好,而且还支持WPF、WinForm程序。很多朋友对于这个开源项目的原理很感兴趣,因此我将通过这篇文章为大家介绍它的工作原理。技术1、检测程序加载的程序集和类微软提供了用于对.NET Core的运行时行为进行分析的库Diagnostics,它可以获取丰富的运行时信息,比如类的实例创建、程序集加载、类加载、方法调用原创 2022-03-22 08:00:00 · 261 阅读 · 0 评论 -
.NET Core剪裁器Zack.DotNetTrimmer升级瘦身引擎,并支持剪裁计划的录制和回放
上周,我发布了对.NET Core程序进行瘦身的开源软件Zack.DotNetTrimmer,与.NET Core内置的剪裁器相比,Zack.DotNetTrimmer不仅对程序的剪裁效果更好,而且还支持WPF、WinForm程序。下面是Zack.DotNetTrimmer与.NET内置的剪裁器的对比图:项目地址:https://github.com/yangzhongke/Zack.DotNetTrimmer一周时间内,相关文章在各平台获得了超过四万阅读量,项目收获了将近200个star,原创 2022-03-21 10:10:48 · 242 阅读 · 0 评论 -
一个更好用的.NET Core程序瘦身器,减小程序尺寸到1/3
一、为什么要开发.NET Core程序瘦身器? .NET Core具有【剪裁未使用的代码】的功能,但是由于它是使用静态分析来实现的,因此它的剪裁效果并不是最优的。它有如下两个缺点:不支持Windows Forms和WPF,而对于程序剪裁功能需求最强烈的其实反而是桌面程序的开发者。 无法删除运行时没有被使用的程序集。比如,我们的程序中使用了A程序集,A程序又引用了B、C两个程序集,A程序集中只有M1方法使用了B程序集,而A程序集中只有M2方法使用了C程序集。我们的程序中只调用了A中的M1方法,而从.原创 2022-03-08 17:45:50 · 571 阅读 · 0 评论 -
如何让asp.net core mvc发布时候不编译cshtml视图
为了避免运行时编译cshtml造成的性能问题,ASP.NET Core MVC项目在发布的时候默认会把cshtml文件编译到dll中,但是有的项目希望能在运行时修改cshtml视图文件。网上有文章讲到过在csproj文件中添加false等方式来修改这个默认的行为,但是那些做法都是旧版.net core的做法,在.net 5/6等新版本中不起作用。下面的方法是我验证过的在最新版的.net core中有效的不编译cshtml视图的做法。步骤1、安装Nuget包:Install-Package Micro原创 2022-02-09 08:00:00 · 383 阅读 · 0 评论 -
.NET Core分析程序集最优美的方法,不用Assembly.LoadFile(),超越ReflectionOnlyLoad
在编写.NET程序的时候,如果需要对一个程序集文件进行分析,我们可以使用Assembly.LoadFile()来加载这个程序集,然后对LoadFile()方法返回的Assembly对象进行进一步的分析。但是Assembly.LoadFile()方法会以执行为目的把程序集加载到程序中,因此它对于被加载的程序集文件有严格的要求,比如,如果被程序集所依赖的程序集不存在,那么LoadFile()会抛出异常,再比如,在.NET Core中加载.NET Framework的程序集,LoadFile()也会抛出异常。如果原创 2022-02-08 18:07:48 · 267 阅读 · 0 评论