.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核心运行时。
更新于:27天前相关文章
- 什么是.NET渐进式Web应用(PWA)
- .NET开发中常见的异常报错原因和解决方法?
- .NET框架和CLR的工作原理?
- ASP.NET MVC与Web Forms的区别
- .NET C#中的IEnumerable和IEnumerator的区别
- 使用ADO.NET连接到南大通用GBase 8s数据库
- 鸿蒙OpenHarmony系统可以运行跨平台的.NET Core吗?
- ASP.NET Core使用partial标签报错
- .NET 9 即将推出的功能Task.WhenEach
- .NET 使用HttpClientFactory+Polly替代直接使用HttpClient
- .NET Framework被淘汰了吗?
- 强大的 .NET Mock 框架 单元测试模拟库Moq使用教程
- Asp.Net Core进程内托管 和 进程外托管的区别
- 什么是.NET云原生应用程序?
- ASP.NET Core实现多语言本地化Web应用程序
- PDFiumCore | .NET Core PDF 处理渲染库
- .NET Blazor 2024年发展趋势
- 解决.NET JAVA PHP中写入及读取memcache中数据不一致的方法
- .NET调试Windows服务的方法
- ASP.NET Core 2.1中的ActionResult<T>