Search

Chapter 4. Publishing applications with .NET 5.0

download PDF

.NET 5.0 applications can be published to use a shared system-wide version of .NET or to include .NET.

The following methods exist for publishing .NET 5.0 applications:

  • Single-file application - The application is self-contained and can be deployed as a single executable with all dependent files contained in a single binary.
  • Framework-dependent deployment (FDD) - The application uses a shared system-wide version of .NET.
Note

When publishing an application for RHEL, Red Hat recommends using FDD, because it ensures that the application is using an up-to-date version of .NET, built by Red Hat, that uses a set of native dependencies. These native libraries are part of the rh-dotnet50 Software Collection.

  • Self-contained deployment (SCD) - The application includes .NET. This method uses a runtime built by Microsoft. Running applications outside the rh-dotnet50 Software Collection may cause issues due to the unavailability of native libraries.

Prerequisites

4.1. Publishing .NET applications

The following procedure outlines how to publish a framework-dependent application.

Procedure

  1. Publish the framework-dependent application:

    $ dotnet publish my-app -f net5.0 -c Release

    Replace my-app with the name of the application you want to publish.

  2. Optional: If the application is for RHEL only, trim out the dependencies needed for other platforms:

    $ dotnet restore my-app -r rhel.7-x64
    $ dotnet publish my-app -f net5.0 -c Release -r rhel.7-x64 --self-contained false
  3. Enable the Software Collection and pass the application to run the application on a RHEL system:

    $ scl enable rh-dotnet50 -- dotnet <app>.dll
  4. You can add the scl enable rh-dotnet50 — dotnet <app>.dll command to a script that is published with the application.

    Add the following script to your project and update the variable:

    #!/bin/bash
    
    APP=<app>
    SCL=rh-dotnet50
    DIR="$(dirname "$(readlink -f "$0")")"
    
    scl enable $SCL -- "$DIR/$APP" "$@"
  5. To include the script when publishing, add this ItemGroup to the csproj file:

    <ItemGroup>
        <None Update="<scriptname>" Condition="'$(RuntimeIdentifier)' == 'rhel.7-x64' and '$(SelfContained)' == 'false'" CopyToPublishDirectory="PreserveNewest" />
    </ItemGroup>
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.