Могу ли я уменьшить пакет публикации dotnet - PullRequest
0 голосов
/ 13 октября 2018

Я недавно начал разрабатывать, используя ядро ​​dotnet (в отличие от старого стиля plain .net), для создания ряда небольших консольных приложений.

Разработка в порядке, и я пришел к тому, что хочучтобы опубликовать их.

Я использую интерфейс командной строки и, поскольку меня интересуют только развертывания Win 10, я попытался

dotnet publish -c release -r win10-x64

. Это сработало, и я создал папку «публикации», в которой все казалосьработать, хотя папка «публикации» огромна (~ 70 МБ) по сравнению с размером приложения (~ 500 строк кода).

Поскольку я собираюсь развертывать только на машинах Win10, есть ли способупаковать это, чтобы мне не нужны все файлы .NET?Я подумал, что именно для этого нужен параметр -r, но, похоже, он многого не достиг.

1 Ответ

0 голосов
/ 13 октября 2018

Это зависит от того, как вы хотите развернуть свое приложение / кто будет их использовать.

Флаг -r создает автономное приложение.Это приводит к тому, что команда publish включает необходимые DLL-библиотеки .NET Core для указанной платформы (и специфичные для платформы пакеты nuget, если они доступны), что означает, что любой может использовать приложение без установки среды выполнения .NET Core.

Если вы уберете флаг -r, то publish будет включать только библиотеки DLL для вашего приложения.Но это означает, что тот, кто хочет использовать ваше приложение, должен сначала установить среду выполнения .NET Core.

Вы можете увидеть разницу, используя флаг -o, чтобы записать результаты публикации в разные каталоги, например,

* 1013.*

или

dotnet publish -c release -o ./publish-any

Теперь перейдите и посмотрите, что было записано в папки ./publish-win10 и ./publish-any, и вы сможете увидеть разницу.

Если вы устанавливаетеих на систему, где уже есть среда выполнения .NET Core, тогда вы можете просто распределить DLL и сэкономить много места.Однако если вы хотите иметь возможность распространять приложение, не заботясь о том, чтобы конечный пользователь беспокоился об установке среды выполнения .NET Core, тогда флаг -r для создания автономного дистрибутива - это то, что нужно, но в результате 'package ', включая необходимые сборки .NET Core.

AFAIK, флаг -r не влияет на то, как ваше приложение компилируется, только то, какие библиотеки времени выполнения включены в состав команды publish.Таким образом, вы всегда получаете одну и ту же DLL для своего кода, если публикуете ее для win10-x64 или с или без флага -r, так что ваша библиотека DLL приложения будет работать на любой платформе (совместимой с .NET Core), но я радисправить в этом пункте.

...