Публикация приложения одним файлом с помощью Visual Studio

  • Михаил
  • 8 мин. на прочтение
  • 102
  • 25 Aug 2023
  • 25 Aug 2023

Visual Studio создает многократно используемые профили публикации, которые управляют процессом публикации приложения. Для приложений ASP.NET, .NET Core можно использовать средство публикации для развертывания приложений. Средство публикации помогает развернуть приложение в различных местах назначения. Для начала щелкните проект правой кнопкой мыши в обозревателе решений и выберите в контекстном меню команду Опубликовать. Функция публикации использует профили (файлы PUBXML), чтобы разрешить несколько конфигураций проекта и несколько целевых объектов публикации для одного проекта. В профиле публикации хранятся учетные данные в отдельном скрытом файле по умолчанию, который не возвращается.

  1. В обозревателе решений щелкните правой кнопкой мыши проект, который нужно опубликовать. Нажмите кнопку Опубликовать
    Если у вас еще нет профиля публикации, следуйте инструкциям по его созданию и выберите Папка в качестве типа целевого объекта.
  2. Нажмите кнопку Изменить.
  3. В диалоговом окне Параметры профиля задайте следующие параметры.
  • Параметру Режим развертывания задайте значение Автономное или Зависимое от платформы.
  • В качестве значения параметра Целевая среда выполнения укажите платформу, на которую будет выполнена публикация. (Значение должно быть отличным от Переносимый.)
  • Выберите Создать отдельный файл. Нажмите кнопку Сохранить, чтобы сохранить параметры и вернуться в диалоговое окно Публикация.
  1. Чтобы опубликовать приложение с одним файлом, нажмите кнопку Опубликовать.

Дополнительные сведения см. в статье Публикация приложений .NET Core с помощью Visual Studio.

Если все прошло хорошо, профиль публикации Properties\PublishProfiles\FolderProfile.pubxml будет выглядеть вот так




  
    Release
    Any CPU
    C:\Users\Администратор\Desktop\TestTest
    FileSystem
    <_TargetId>Folder
    net6.0
    false
    win-x64
    true
    false
  

А в интерфейсе публикации оно будет выглядеть так

Примечание для .NET 5 и более новых версий

Так как в .NET 5 оптимизировали технологию запуска приложения из одиночного файла, теперь по умолчанию он не включает в себя нативные библиотеки, а включает только управляемые.

Если ваша сборка зависит от нативных библиотек, и вы столкнулись с тем, что dll файлы при публикации все равно лежат отдельно, то чтобы это вылечить, в первую секцию .cproj файла нужно добавить опцию:

true