#!/usr/bin/env bash set -eo pipefail mode="$1" outdir="bin/publish" args_selfcontained=" --self-contained --use-current-runtime -p:PublishSingleFile=true -p:PublishTrimmed=true -p:TrimMode=partial -p:EnableCompressionInSingleFile=true -p:OptimizationPreference=Size -p:InvariantGlobalization=true -p:DebugType=none -p:IncludeNativeLibrariesForSelfExtract=true" args_aot=" -p:PublishAot=true -p:OptimizationPreference=Size -p:DebugType=none" case "$mode" in aot | native | бинарное) args="$args_aot" ;; self-contained | selfcontained | небинарное) args="$args_selfcontained" ;; *) echo "ПОЛЬЗОВАНИЕ: ./build.sh [способ]" echo " СПОСОБЫ:" echo " aot, native, бинарное - компилирует промежуточный (управляемый) код в машинный вместе с рантаймом" echo " self-contained, selfcontained, небинарное - приделывает промежуточный (управляемый) код к рантайму" echo " Оба способа собирают программу в один файл, который не является 80-мегабайтовым умственно отсталым кубом.\ Он 20-мегабайтовый >w<" exit 1 ;; esac rm -rf "$outdir" # when internet breaks again add --source /mnt/c/Users/User/.nuget/packages/ command="dotnet publish -c Release -o $outdir $args" echo "$command" $command find "$outdir" -name '*.pdb' -delete -printf "deleted '%p'\n" tree -sh "$outdir"