.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天前相关文章
- ASP.NET Core 2.1中的ActionResult<T>
- 在ASP.NET Core 2.1中使用HttpClientFactory的3种方法
- .NET Core MVC应用程序创建教程
- .NET Core中的File和PhysicalFile
- .NET Core 读取配置文件方法
- .NET Core 管道模型中间件及管道模拟实现
- ASP.NET Core多环境配置
- .NET Core 日志配置,NLog配置示例
- ASP.NET Core主机和应用启动流程
- .NET Core SkiaSharp替代System.Drawing的用法
- .NET Core 3.X路由中间件和终结点中间件
- .Net报错Could not find a part of the path bin\roslyn\csc.exe
- IIS中.NET Core报错HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
- .NET Core分部视图PartialView用法
- .NET Core 视图组件Component用法
- ASP.NET Core的三种部署方式
- .NET Core中使用System.Drawing处理图像
- .NET Core Razor Page ajax请求返回400 Bad request
- .NET Core上传文件报Access xxx.tmp is denied错误
- ASP.NET Core 使用Razor code blocks替代@helper