.Net 5 Publish Single File - Производит exe и dll

Я использую VS 2019 и .Net 5 для создания простого консольного приложения. Я хотел поделиться этим приложением с другом, поэтому я попытался опубликовать его как один файл, но я продолжаю получать некоторые дополнительные библиотеки DLL, которые необходимы исполняемому файлу для правильной работы.

Изменить: переключение этого проекта на .net core 3.1 работает должным образом. Я могу экспортировать один файл Exe без каких-либо необходимых библиотек DLL.

Dotnet Cli: dotnet publish -c Release -o publish -p:PublishReadyToRun=true -p:PublishSingleFile=true -p:PublishTrimmed=true --self-contained true

Csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <PublishSingleFile>true</PublishSingleFile>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <PlatformTarget>x64</PlatformTarget>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="HtmlAgilityPack" Version="1.11.28" />
  </ItemGroup>
</Project>

Вывод


person Bailey Miller    schedule 06.12.2020    source источник
comment
Отвечает ли это на ваш вопрос? .NET 5 исключает некоторые библиотеки из публикации в один файл   -  person magicandre1981    schedule 06.12.2020


Ответы (1)


Его известная проблема, описанная здесь: https://github.com/dotnet/runtime/issues/36590 < / а>

Здесь представлен новый опыт разработки: https://github.com/dotnet/designs/blob/main/accepted/2020/single-file/design.md#user-experience

Так что в вашем случае вам нужно использовать p:IncludeNativeLibrariesForSelfExtract=true дополнительно.

Полная команда:

dotnet publish -c Release -o publish -p:PublishReadyToRun=true -p:PublishSingleFile=true -p:PublishTrimmed=true --self-contained true -p:IncludeNativeLibrariesForSelfExtract=true

или включите этот флаг в .csproj файл

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <PublishSingleFile>true</PublishSingleFile>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <PlatformTarget>x64</PlatformTarget>
    
   <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>

</PropertyGroup>
person Anton Komyshan    schedule 06.12.2020
comment
Ссылка на статью: docs.microsoft.com / en-us / dotnet / core / deploying / - person Alternatex; 30.01.2021