This reference documentation offers an in-depth description of the behavior and configuration options of the Paketo .NET Core buildpack. For explanations of how to use the buildpack for several common use-cases, see the Paketo .NET Core buildpack How To documentation.
The .NET Core Paketo buildpack supports several versions of the .NET Core Framework. For more details on the specific versions supported in a given buildpack version, see the release notes.
When detecting what version of the .NET runtime to install, the .NET Core buildpack uses the same version selection policy that Microsoft has put together for .NET Core Framework. If you would like to know more about the policy please refer to this documentation provided by Microsoft.
The .NET Core buildpack can be configured using service bindings.
type |
Required Files | # Bindings of This Type Accepted |
---|---|---|
nugetconfig |
type , nuget.config |
0 or 1 |
The Paketo .NET Core buildpack is a composite buildpack designed to build .NET Core applications in several different forms.
The .NET Core buildpack supports several types of application source code that can be built into a container image. Developers can provide raw source code, or built artifacts like Framework-Dependent Deployments/Executables or Self-Contained Deployments when building their application.
The .NET Core buildpack is capable of building application source code
into Framework-Dependent Deployments (FDD) or Executables (FDE). This is
achieved using the dotnet publish
command. For .NET Core Framework 2.x
applications, an FDD is
produced
as the default build artifact, while an FDE is
produced
when the application source is for .NET Core Framework 3.x. The buildpack sets the following dotnet publish
flags by default:
--configuration Release
--runtime linux-x64
--self-contained false
--output <temp-directory>
See the dotnet CLI documentation for details about build configuration.
When building an application that has already been published as a Framework-Dependent Deployment or Framework-Dependent Executable, the buildpack will include the required .NET Core Framework dependencies and set the start command.
When building an application as a Self-Contained Deployment (SCD), the buildpack will ensure the correct start command will be used to run your app. No .NET Core Framework dependencies will be included in the built image as they are already included in the SCD artifact.
The DOTNET_ROOT
environment variable specifies the path to the directory where .NET Runtimes and SDKs are installed.
dotnet-core-runtime
, dotnet-core-sdk
, dotnet-core-aspnet
buildpacksbuild
and launch
The RUNTIME_VERSION
environment variable specifies the version of the .NET Core Runtime installed by the .NET Core Runtime buildpack.
dotnet-core-runtime
build
The SDK_LOCATION
environment variable specifies the file path location of the installed .NET Core SDK.
dotnet-core-sdk
build
The PATH
environment variable is modified to enable the dotnet
CLI to be found during subsequent build
and launch
phases.
dotnet-core-sdk
build
and launch
dotnet
executableThe .NET Core buildpack will ensure that your application image is built with a valid launch process command. These commands differ slightly depending upon the type of built artifact produced during the build process.
For more information about which built artifact is produced for a Source Application, see this section.
For Framework-Dependent Deployments (FDD), the dotnet
CLI will be invoked to
start your application. The application will be given configuration to help it
bind to a port inside the container. The default port is 8080, but can be
overridden using the $PORT
environment variable.
dotnet myapp.dll --urls http://0.0.0.0:${PORT:-8080}
For Self-Contained Deployments and Framework-Dependent Executables, the
executable will be invoked directly to start your application. The application
will be given configuration to help it bind to a port inside the container. The
default port is 8080, but can be overridden using the $PORT
environment
variable.
./myapp --urls http://0.0.0.0:${PORT:-8080}
The .NET Core buildpack supports the full software bill of materials (SBOM) in Syft, CycloneDX, and SPDX formats. The .NET Core buildpack also includes limited support for the legacy Paketo-specific SBOM format. This Paketo-specific SBOM format does not include information about the application dependencies.
Check out the Access the Software Bill of Materials guide for more information about how to retrieve the SBOM for your .NET Core app image.
Last modified: October 4, 2024