Пакеты типа System.Net.Sockets
содержат управляемые биты, от которых зависят ваши приложения. Поэтому независимо от того, какой подход к развертыванию вы используете (зависящий от фреймворка или самодостаточный), они требуются, поэтому восстанавливаются процессом сборки.
Пакеты, подобные runtime.unix.System.Net.Sockets
, обычно содержат только собственные биты (прокладки для переноса в ОС). API). Они требуются только для автономного развертывания.
То есть, просто говоря, System.Net.Sockets
зависит от runtime.unix.System.Net.Sockets
(если он работает на UNIX). Они не эквивалентны друг другу, как вы и предполагали.
Вам не нужно вызывать dotnet restore --runtime linux-musl-x64
, так как эти пакеты времени выполнения бесполезны во время компиляции. Восстановление таких пакетов времени выполнения может быть отложено до dotnet publish
, если вы указали конкретную c среду выполнения.