首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一个C#开发的大小只有8KB的贪吃蛇开源游戏!

大家好,我是编程乐趣。

今天给大家推荐基于C#开发的、一个贪吃蛇开源项目,这个项目除了实现贪吃蛇的功能外,重点是讲解如何把编译后的程序,从65MB精简为8KB。

项目地址

https://github.com/MichalStrehovsky/SeeSharpSnake

编译精简过程如下:

1、正常发布,大小为65MB

dotnet publish -r win-x64 -c Release

2、添加参数/p:PublishTrimmed=true,移除未使用的代码,大小为25MB

dotnet publish -r win-x64 -c Release /p:PublishTrimmed=true

3、使用CoreRT的编译模式,大小为4.7MB

dotnet publish -r win-x64 -c Release /p:Mode=CoreRT

4、使用CoreRT-Moderate的编译模式,大小为4.3MB

dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-Moderate

5、使用CoreRT-High的编译模式,大小为3.0MB

dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-High

6、使用CoreRT-ReflectionFree的编译模式,大小为1.2MB

dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-ReflectionFree

7、使用CoreRT-NoRuntime的编译模式,大小为10KB

dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-NoRuntime

8、采用csc.exe编译,大小为8KB

//编译C#代码csc.exe /debug /O /noconfig /nostdlib /runtimemetadataversion:v4.0.30319 MiniRuntime.cs MiniBCL.cs Game\FrameBuffer.cs Game\Random.cs Game\Game.cs Game\Snake.cs Pal\Thread.Windows.cs Pal\Environment.Windows.cs Pal\Console.Windows.cs Pal\Console.cs /out:zerosnake.ilexe /langversion:latest /unsafe//将库组合成一个可执行文件link.exe /debug:full /subsystem:console zerosnake.obj /entry:__managed__Main kernel32.lib ucrt.lib /merge:.modules=.rdata /merge:.pdata=.rdata /incremental:no /DYNAMICBASE:NO /filealign:16 /align:16

以上就是作者尝试的编译精简过程,我们使用比较多是第2步,其他步骤可能会有兼容问题,实际项目要慎用。

但是.Net 7开始支持AOT,还能进一步优化!大家感兴趣的可以自行尝试下。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OGbBpgtoyuNW8152twwEciiw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券