.NET的AOT和发布功能

新版.NET中的AOT(Ahead-of-Time)技术已愈发成熟,AOT是指在程序运行之前就把代码编译成目标平台的原生机器码,而不依赖运行时的JIT(Just-in-Time)编译器,这能带来更小的发布体积、更快的启动速度、更小的内存占用和更高的安全性。AOT编译后的程序自带核心运行时(相比自包含方式小的多)。但是AOT技术具有一定限制:不支持反射、动态IL代码、动态加载程序集等语言特性。当前.NET生态中有大量三方库的实现都基于以上语法特性,这就导致很多三方库不支持AOT编译。

AOT技术的使用场景受限,对于不支持AOT的项目(例如.NET下的WPF应用),在发布时可以选择自包含运行时,那么程序在没有安装运行时的环境中依然能够运行,这种方式也是非常便捷的,唯一不足在于程序发布体积过大(自带完整运行时,体积达到100MB)。

下面简要介绍下如何使用AOT和发布功能。

阅读更多

在C#程序中调用大模型的API接口

当前,以ChatGPT、DeepSeek为代表的各种大语言模型层出不穷,让我们切实感受到人工智能的强大。如果能在程序中集成大语言模型的问答能力,那么将能实现一些非常有用和非常有趣的需求。

本文简单介绍在C#应用中调用大模型接口的几种方法,其中基于HttpClient的原生方法、OpenAPI包是两种通用方法,前者依赖最少推荐。

阅读更多

C++包管理器Conan

包管理器主要用于下载、管理、编译和链接第三方库,许多语言都原生集成包管理器(例如RustPythonC#等),各种三方库下载即用。C++语言的一大缺陷就是缺乏原生的包管理器,这导致在项目中引用第三方库十分繁琐,尤其是需要引用大量第三方库的时候。但哪里有问题,哪里就有造轮子的人!vcpkg、Conan等C++包管理器应运而生。

vcpkg是微软开发的C++包管理器,使用非常方便,非常容易和Visual Studio IDE集成;但是vcpkg在安装包的过程中经常需要访问Github资源,对于网络受限的用户来说非常不友好。

为此,笔者投入了Conan阵营,Conan与vcpkg差异较大,三方库提供了多个预编译版本,在安装的过程中往往只需要下载这些预编译的版本即可(vcpkg每次都会下载源码进行编译),所以安装包的过程很迅速。它也提供对CMake和Visual Studio IDE的集成支持。

本文简要介绍Conan包管理器的基本用法。

阅读更多

编译OCCT和OSG库

项目上开始接触三维开发,Open CASCADE(OCCT)和OpenSceneGraph(OSG)是经典组合,前者用于模型创建,后者用于模型渲染,各司其职、各尽其能。

本文对这两个三维开源库的编译过程进行简要记录。

阅读更多

C#之async和await原理探究

C#的异步编程强大而优雅,但其实现原理也异常复杂。本文以一个简单实例作为切入点,一窥底层技术的奥秘,也体验驾驭复杂代码逻辑的乐趣。

阅读更多

mybatis访问数据库

mybatis是Java中非常流行的一个数据库访问工具,比较底层,能灵活配置SQL语句,本文对其基本用法做一个简单介绍,借此机会了解下Java生态中的数据库读写技术。当然,技术是相通的,. NET之Dapper类似Java之mybatis,. NET之EF类似Java之Spring JPA,前者底层,后者高层,前者功能颗粒度小更灵活,后者功能强大更重量。在合适的场景选择合适的技术是最重要的。

阅读更多