一个独立的应用程序是一个很好的方式来共享您的应用程序,因为所有的组件、运行时和框架都包含在应用程序中。您只需提供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核心运行时。