blob: afd72bee990071e868d67dc764f6a49d34faa9b2 [file] [log] [blame] [edit]
# The change to the PATH is recommended here:
# https://learn.microsoft.com/en-us/dotnet/core/install/linux-scripted-manual?source=recommendations#set-environment-variables-system-wide
# We list our .Net installation first because we
# want it to be picked up first
# The `MSBuildEnableWorkloadResolver` is disabled to prevent warnings
# about a missing Microsoft.NET.SDK.WorkloadAutoImportPropsLocator
def dotnet_preamble(toolchain):
return """
export DOTNET="$(pwd)/{dotnet}"
export DOTNET_CLI_HOME="$(dirname $DOTNET)"
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_NOLOGO=1
export DOTNET_ROOT="$(dirname $DOTNET)"
export PATH=$DOTNET_ROOT:$DOTNET_ROOT/tools:$PATH
export MSBuildEnableWorkloadResolver=false
export CWD=$(pwd)
# Required to make packing work on Windows
export APPDATA="$(pwd)"
export PROGRAMFILES="$(pwd)"
# Required to make NuGet tool work on non-writable home path like GitHub actions
export XDG_DATA_HOME=$(mktemp -d)
# Create `global.json` to trick .Net into using the hermetic toolchain
# https://learn.microsoft.com/en-us/dotnet/core/tools/global-json
echo '{{"sdk": {{"version": "{version}"}} }}' >$(pwd)/global.json
""".format(
dotnet = toolchain.runtime.files_to_run.executable.path,
version = toolchain.dotnetinfo.sdk_version,
)