| # 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, |
| ) |