In .NET Core 3.0, the support for single-file applications is added.
Publishing to a single file can be triggered by adding the following property to an application's project file:
<PropertyGroup> <PublishSingleFile>true</PublishSingleFile> </PropertyGroup>
PublishSingleFileproperty applies to both frameworks dependent and self-contained publish operations.
PublishSingleFileproperty applies to platform-specific builds for a given runtime-identifier.
PublishSingleFileis set to
true, it is an error to leave
RuntimeIdentifierundefined, or to set
PublishSingleFilepropertycauses the managed app, managed dependencies, platform-specific native dependencies, configurations, etc. to be embedded within the native apphost.
By default, the symbol files are not embedded within the single-file but remain as separate files in the publish directory. This includes both the IL
.pdb file, and the native
app.guid.map files generated by ready-to-run compiler. Setting the following property causes the symbol files to be included in the single-file.
<PropertyGroup> <IncludeSymbolsInSingleFile>true</IncludeSymbolsInSingleFile> </PropertyGroup>
Certain files can be explicitly excluded from being embedded in the single-file by setting following meta-data:
For example, to place some files in the publish directory but not bundle them in the single-file:
<ItemGroup> <Content Update="*.xml"> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> <ExcludeFromSingleFile>true</ExcludeFromSingleFile> </Content> </ItemGroup>
dotnet publish command supports packaging your app into a platform-specific single-file executable.
To publish a single-file executable, set the
PublishSingleFile in your project file as shown below.
<PropertyGroup> <RuntimeIdentifier>win10-x64</RuntimeIdentifier> <PublishSingleFile>true</PublishSingleFile> </PropertyGroup>
Or you can run the
dotnet publish from the command line as shown below.
dotnet publish -r win10-x64 -p:PublishSingleFile=true