.NET Core 3.0创建一个单独的可执行文件
一个独立的应用程序是一个很好的方式来共享您的应用程序,因为所有的组件、运行时和框架都包含在应用程序中。您只需提供application.exe文件,而不必担心其他计算机上是否存在框架或运行时安装状态。.NET Core 3.0预览版6已经推出,还有很多新功能。其中一个有用的特性是引入publishtrimmed标志。此标志在很大程度上减小了可执行文件的大小,并在.NET Core 3.0中创建一个可执行文件。
现在有了.NET核心,您可以使用以下命令创建一个独立的应用程序。
dotnet publish -r win-x64 -c Release --self-contained
上面的命令以发布模式构建应用程序并发布自包含的应用程序。这将创建一个包含application.exe和其他依赖项的文件夹。因此,要在另一台计算机上运行此应用程序,必须复制完整的文件夹并从中运行.exe。这很好,但是有100多个文件,对于一个简单的基于.NET内核的控制台应用程序来说,文件的大小也很大。
此问题在.NET Core 3.0预览版5中解决。此版本引入了一个名为publishsinglefile的标志,该标志生成单个.exe文件。该命令可以以下方式使用:
dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true
或者,也可以在项目文件中指定。
<propertygroup>
<outputtype>exe<outputtype>
<targetframework>netcoreapp3.0<targetframework>
<rootnamespace>hello_.netcore3<rootnamespace>
<publishsinglefile>true</publishsinglefile>
<runtimeidentifier>win-x64<runtimeidentifier>
<propertygroup>
PublishSingleFile标志生成以下输出。从下图中可以看到,现在只有一个.exe文件。
现在是一个.exe,但大小仍然是一个问题。它接近70 MB。这在.NET核心3.0的预览版6中得到了解决,它引入了一个名为publishtrimmed的新标志,该标志不包括不用于减小大小的dll。您需要同时使用这两个标志来在.NET核心3.0中创建一个经过修剪的自包含的单个可执行文件。就像,
dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true
或者,也可以在项目文件中指定这两个标志。
<propertygroup>
<outputtype>exe<outputtype>
<targetframework>netcoreapp3.0<targetframework>
<rootnamespace>hello_.netcore3<rootnamespace>
<publishsinglefile>true</publishsinglefile>
<publishtrimmed>true<publishtrimmed>
<runtimeidentifier>win-x64<runtimeidentifier>
<propertygroup>
结果只得到一个29 MB的单exe文件。您应该说,对于一个简单的控制台应用程序来说,它仍然是相当大的。但请记住,它是一个独立的应用程序,它还包括.NET核心运行时。
更新于:2个月前相关文章
- .NET C# 读取编辑.AVIF图片文件
- .NET C# SkiaSharp读取.AVIF图片文件报错
- .NET开源ORM FreeSql常见问题和解决方法
- 微软于发布了.NET 9 Release Candidate 2 提高整体质量
- 分享5个开源的.NET Excel读写操作库
- .Net Core中Dapper的使用详解
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何从.NET Framework迁移到.NET Core或.NET 6/7?
- 如何优化ASP.NET Core应用的性能?
- 10款.NET开发中推荐的代码分析和质量工具
- .NET9 Blazor有哪些更新?
- 在Docker、Kubernetes环境下部署.NET应用的最佳实践
- .NET 游戏开发框架有哪些?
- PluginCore 基于 ASP.NET Core 的轻量级插件框架
- .NET C# EntityFramework(EF)连接SQLite代码示例
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程
- .NET9 C# 13 有哪些新特性?