Публикация .net core 5.0 в один exe-файл

#c#

#c#

Вопрос:

Кто-нибудь может мне помочь? Я пытаюсь опубликовать свое консольное приложение .net core в одном файле.

Я использую эту команду:

 dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true
 

Я ожидаю, что он создаст один файл. Но все же есть dll-файлы:

 clrcompression.dll
clrjit.dll
coreclr.dll
mscordaccore.dll
 

Как я могу это исправить? Я уже ищу, но это тот же результат

Ответ №1:

Для объединения собственных библиотек вам необходимо указать IncludeNativeLibrariesForSelfExtract флаг.

Итак, попробуйте запустить это dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true /p:IncludeNativeLibrariesForSelfExtract=true

См. https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file#other-considerations

Комментарии:

1. Хорошо, это может быть то, что я ищу. Я попробую позже и оставлю отзыв

2. Большое вам спасибо

Ответ №2:

Чтобы включить библиотеки DLL dotnet runtime в ваш исполняемый файл, вам также необходимо использовать --self-contained флаг. Итак, вы можете запускать dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true --self-contained true .

См. https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file

Комментарии:

1. уже пробовал это тоже. Все то же самое. i.imgur.com/lNA0sIz.png

2. Я попробовал, попробовал и получил тот же результат. ответ @Anis правильный

Ответ №3:

Если вы используете Visual Studio, перейдите Build-> Publish [yourprojectname], отредактируйте профиль и установите флажок Создать один файл.

введите описание изображения здесь

Ответ №4:

У меня тоже была такая же проблема, но я нашел ответ, изучив меню dotnet publish справки. Используйте следующую команду dotnet publish -r win-x64 /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true , которая встроит .библиотеки dll в двоичном файле, поэтому в папке публикации останется только файл .pdb, который не нужен во время выполнения.