Поделиться через


Обзор публикации приложений .NET

В этой статье описываются различные способы публикации приложения .NET. В нем рассматриваются режимы публикации, создание исполняемых файлов и межплатформенных двоичных файлов, а также влияние каждого подхода к средам развертывания и среды выполнения. Вы можете публиковать приложения .NET с помощью .NET CLI или Visual Studio.

Краткое руководство по публикации см. в руководстве по публикации консольного приложения .NET с помощью Visual Studio Code.

Краткое руководство по публикации см. в руководстве по публикации консольного приложения .NET с помощью Visual Studio.

Что такое публикация

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

Режимы публикации

Существует два основных способа публикации приложения. Некоторые факторы, влияющие на это решение, включают, установлена ли среда развертывания соответствующую среду выполнения .NET и требуется ли определенная функция компиляции, требующая объединение среды выполнения с приложением. Два режима публикации:

  • Публикация автономной
    В этом режиме создается папка публикации, которая включает исполняемый файл для конкретной платформы, используемый для запуска приложения, скомпилированный двоичный файл, содержащий код приложения, все зависимости приложений и среду выполнения .NET, необходимую для запуска приложения. Среда, которая запускает приложение, не должна иметь предварительно установленную среду выполнения .NET.

  • Публикация зависимой от платформы
    В этом режиме создается папка публикации, которая включает необязательный исполняемый файл для конкретной платформы, используемый для запуска приложения, скомпилированный двоичный файл, содержащий код приложения, и все зависимости приложений. Среда, которая запускает приложение, должна иметь версию среды выполнения .NET, которую может использовать приложение.

Это важно

Вы указываете целевую платформу с идентификатором среды выполнения (RID). Дополнительные сведения о RID см. в каталоге .NET RID .

Основы публикации

Параметр <TargetFramework> файла проекта указывает целевую платформу по умолчанию при публикации приложения. Целевую платформу можно изменить на любой допустимый Moniker Целевой платформы (TFM). Например, если проект использует <TargetFramework>net9.0</TargetFramework>, создается двоичный файл, предназначенный для .NET 9.

Если вы хотите нацелить несколько платформ, можно задать <TargetFrameworks> для параметра несколько значений TFM, разделенных точкой с запятой. При создании приложения приложение создается для каждой целевой платформы, определенной проектом. Однако при публикации приложения необходимо указать целевую платформу:

Режим конфигурации сборки по умолчанию — "Выпуск", если он не изменен с параметром -c .

dotnet publish -c Release -f net9.0

По умолчанию используется dotnet publishвыходной каталог ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/ команды. Например, dotnet publish -c Release -f net9.0 публикуется в ./bin/Release/net9.0/publish/. Однако вы можете выбрать упрощенный выходной путь и структуру папок для всех выходных данных сборки. Дополнительные сведения см. в разделе " Макет выходных данных артефактов".

В Visual Studio создайте отдельные профили публикации для каждой целевой платформы.

Переносимые двоичные файлы

При публикации приложения .NET можно нацелиться на определенную платформу или создать переносимый двоичный файл. По умолчанию даже при создании переносимого двоичного файла .NET публикует исполняемый файл для конкретной платформы (apphost) вместе с переносимой библиотекой DLL, если вы явно не отключите это поведение.

Исполняемый файл для конкретной платформы создается из-за UseAppHost свойства, в котором по умолчанию используется trueзначение . Чтобы опубликовать только переносимую библиотеку DLL без исполняемого файла для конкретной платформы, задайте UseAppHost значение false в командной строке (-p:UseAppHost=false) или в качестве свойства проекта.

Преимущество целевой платформы заключается в том, что она может обрабатывать собственные зависимости , которые может требовать ваше приложение, обеспечивая совместимость с конкретными требованиями целевой платформы.

Собственные зависимости

Если приложение имеет собственные зависимости, оно может не работать в другой операционной системе, если она опубликована как переносимый двоичный файл. Например, приложения, зависящие от API Windows, не запускаются в macOS или Linux. Необходимо предоставить код для конкретной платформы и скомпилировать исполняемый файл для каждой платформы.

Рассмотрите также, если на библиотеку, на которая вы ссылаетесь, предоставляются зависимости для конкретной платформы, ваше приложение может не запускаться на каждой платформе. Однако при публикации и целевой платформе зависимости конкретной платформы пакета NuGet копируются в папку публикации.

Чтобы убедиться, что приложение опубликовано со своими собственными зависимостями, опубликуйте для определенной платформы:

dotnet publish -c Release -r <RID>
  • -c Release

    Этот переключатель задает конфигурацию сборки для выпуска, оптимизированную для развертывания в рабочей среде.

  • -r <RID>

    Этот параметр использует идентификатор среды выполнения (RID), чтобы указать целевую платформу и обеспечить включение собственных зависимостей (при необходимости). Список идентификаторов среды выполнения см. в каталоге идентификаторов среды выполнения (RID).

  1. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите "Опубликовать".
  2. Если это первая публикация, выберите папку в качестве целевого объекта публикации и нажмите кнопку "Далее".
  3. Выберите расположение папки или примите значение по умолчанию, а затем нажмите кнопку "Готово".
  4. В профиле публикации выберите "Показать все параметры".
  5. Установите целевую среду выполнения на нужную платформу (например, win-x64 для 64-разрядных Windows).
  6. Нажмите кнопку "Сохранить " и " Опубликовать".

Список идентификаторов среды выполнения см. в каталоге идентификаторов среды выполнения (RID).

Краткий справочник

В следующей таблице приведены краткие примеры публикации приложения.

Режим публикации Команда
Развертывание, зависящая от платформы dotnet publish -c Release [-r <RID>]
Развертывание, зависящая от платформы (DLL) dotnet publish -c Release -p:UseAppHost=false
Автономное развертывание dotnet publish -c Release [-r <RID>] --self-contained true
Развертывание с одним файлом dotnet publish -c Release [-r <RID>] -p:PublishSingleFile=true
Развертывание AOT в собственном коде dotnet publish -c Release [-r <RID>] -p:PublishAot=true
Развертывание ReadyToRun dotnet publish -c Release [-r <RID>] -p:PublishReadyToRun=true
Развертывание контейнера dotnet publish -c Release [-r <RID>] -t:PublishContainer

Развертывание, зависящая от платформы

Развертывание, зависяющее от платформы, — это режим по умолчанию при публикации из интерфейса командной строки или Visual Studio. В этом режиме создается исполняемый файл для конкретной платформы, который можно использовать для запуска приложения. Исполняемый файл для конкретной платформы называется примерно так же, как myapp.exe в Windows или только myapp на других платформах.

Приложение настроено для целевой версии .NET. Эта целевая среда выполнения .NET должна находиться в среде, в которой выполняется ваше приложение. Например, если приложение предназначено для .NET 9, любая среда, на которой работает ваше приложение, должна быть установлена среда выполнения .NET 9.

Публикация зависимого от платформы развертывания создает приложение, которое автоматически развертывается до последней версии исправления безопасности .NET, доступного в среде, которая запускает приложение. Дополнительные сведения о привязке версий во время компиляции см. в разделе "Выбор используемой версии .NET".

Преимущества

  • Небольшое развертывание: распределены только приложение и его зависимости. Среда, в которой выполняется приложение, уже должна быть установлена среда выполнения .NET.
  • Кроссплатформенная платформа: приложение и любой. Библиотека на основе NET выполняется в других операционных системах.
  • Использует последнюю среду выполнения исправлений: приложение использует последнюю среду выполнения, установленную в среде.

Недостатки

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

Запуск приложений, зависящих от платформы

Существует два способа запуска приложений, зависящих от платформы: через исполняемый файл для конкретной платформы (apphost) и через dotnet myapp.dll. Исполняемый файл apphost можно запустить непосредственно вместо вызова dotnet myapp.dll, который по-прежнему является приемлемым способом запуска приложения. По возможности рекомендуется использовать apphost. Существует ряд преимуществ использования apphost:

  • Исполняемые файлы выглядят как стандартные файлы для собственной платформы.
  • Имена исполняемых файлов сохраняются в именах процессов, что означает, что приложения можно легко распознать на основе их имен.
  • Так как apphost — это нативный исполнительный бинарный файл, к которому можно подключать нативные ресурсы, такие как манифесты.
  • Apphost имеет доступные низкоуровневые способы устранения рисков безопасности, применяемые по умолчанию, что делает его более безопасным. Например, технология контроля потоков (Control-flow Enforcement Technology, CET) с теневым стеком включена по умолчанию, начиная с версии .NET 9. К мерам по снижению рисков для dotnet применяется наименьший общий знаменатель всех поддерживаемых сред исполнения.

Опубликовать

dotnet publish -c Release [-r <RID>]
  • -c Release

    Этот переключатель задает конфигурацию сборки для выпуска, оптимизированную для развертывания в рабочей среде.

  • -r <RID>

    Этот параметр использует идентификатор среды выполнения (RID), чтобы указать целевую платформу и обеспечить включение собственных зависимостей (при необходимости). Список идентификаторов среды выполнения см. в каталоге идентификаторов среды выполнения (RID).

Или явно:

dotnet publish -c Release [-r <RID>] --self-contained false
  • --self-contained false

    Этот параметр явно сообщает пакету SDK для .NET, чтобы создать развертывание, зависящей от платформы.

  1. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите "Опубликовать".
  2. Если это первая публикация, выберите папку в качестве целевого объекта публикации и нажмите кнопку "Далее".
  3. Выберите расположение папки или примите значение по умолчанию, а затем нажмите кнопку "Готово".
  4. В профиле публикации выберите "Показать все параметры".
  5. Установите режим развертывания в зависимости от платформы (это значение по умолчанию).
  6. Установите целевую среду выполнения на нужную платформу (например, win-x64 для 64-разрядных Windows).
  7. Нажмите кнопку "Сохранить " и " Опубликовать".

Настройка поведения поиска установки .NET

По умолчанию apphost обнаруживает и использует глобально установленную среду выполнения .NET, а расположения установки зависят от платформы. Дополнительные сведения об обнаружении сред выполнения и местах их установки см. в разделе "Устранение неполадок при запуске приложения".

Путь среды выполнения .NET также можно настроить на основе каждого выполнения. Переменная DOTNET_ROOT среды может использоваться для указания пользовательского расположения. Дополнительные сведения обо всех DOTNET_ROOT параметрах конфигурации см. в разделе переменных среды .NET.

В общем, лучшая практика использования DOTNET_ROOT заключается в следующем:

  1. Сначала очищайте DOTNET_ROOT переменные среды, то есть все переменные среды, начинающиеся с текста DOTNET_ROOT.
  2. Установите DOTNET_ROOT и только DOTNET_ROOT в целевой путь.
  3. Выполните целевой объект apphost.

В .NET 9 и более поздних версиях можно настроить пути поиска установки .NET опубликованного исполняемого файла с помощью AppHostDotNetSearch свойств и AppHostRelativeDotNet свойств.

AppHostDotNetSearch позволяет указать одно или несколько расположений, где исполняемый файл будет искать установку .NET:

AppHostRelativeDotNet указывает путь относительно исполняемого файла, который будет искать, когда AppHostDotNetSearch содержится AppRelative.

Дополнительные сведения см. в разделе AppHostDotNetSearchи AppHostRelativeDotNetустановке параметров расположения в apphost.

Развертывание межплатформенной библиотеки DLL

Кроме того, вы можете опубликовать приложение в виде кроссплатформенной библиотеки DLL без исполняемого файла для конкретной платформы. В этом режиме myapp.dll файл создается в выходной папке публикации. Чтобы запустить приложение, перейдите в выходную папку и используйте dotnet myapp.dll команду.

Для публикации в виде кроссплатформенной библиотеки DLL:

dotnet publish -c Release -p:UseAppHost=false
  • -c Release

    Этот переключатель задает конфигурацию сборки для выпуска, оптимизированную для развертывания в рабочей среде.

  • -p:UseAppHost=false

    Это свойство отключает создание исполняемого файла для конкретной платформы, создавая только переносимую библиотеку DLL.

  1. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите "Опубликовать".
  2. Если это первая публикация, выберите папку в качестве целевого объекта публикации и нажмите кнопку "Далее".
  3. Выберите расположение папки или примите значение по умолчанию, а затем нажмите кнопку "Готово".
  4. В профиле публикации выберите "Показать все параметры".
  5. Задайте режим развертываниязависимым от платформы.
  6. Снимите флажок "Создать один файл".
  7. Задайте для целевой среды выполненияпереносимое значение (или оставьте пустым).
  8. Нажмите кнопку "Сохранить " и " Опубликовать".

Автономное развертывание

При публикации автономного развертывания (SCD) процесс публикации создает исполняемый файл для конкретной платформы. Публикация SCD включает все необходимые файлы .NET для запуска приложения, но не включают собственные зависимости .NET. Эти зависимости должны присутствовать в среде перед запуском приложения.

Публикация SCD создает приложение, которое не выполняет откат к последней доступной исправлению безопасности .NET. Дополнительные сведения о привязке версий во время компиляции см. в разделе "Выбор используемой версии .NET".

Преимущества

  • Управление версией .NET: управление версией .NET, развернутой с помощью приложения.
  • Назначение для конкретной платформы: так как приложение должно быть опубликовано для каждой платформы, понятно, где работает приложение.

Недостатки

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

Совет

Вы можете уменьшить общий размер совместимых автономных приложений, публикуя обрезанные или включив инвариантный режим глобализации. Дополнительные сведения о инвариантном режиме глобализации см. в режиме инвариантной глобализации .NET.

Опубликовать

dotnet publish -c Release -r <RID> --self-contained true
  • -c Release

    Этот переключатель задает конфигурацию сборки для выпуска, оптимизированную для развертывания в рабочей среде.

  • -r <RID>

    Этот параметр использует идентификатор среды выполнения (RID), чтобы указать целевую платформу и обеспечить включение собственных зависимостей (при необходимости). Список идентификаторов среды выполнения см. в каталоге идентификаторов среды выполнения (RID).

  • --self-contained true

    Этот параметр сообщает пакету SDK для .NET создать исполняемый файл как автономное развертывание (SCD).

  1. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите "Опубликовать".
  2. Если это первая публикация, выберите папку в качестве целевого объекта публикации и нажмите кнопку "Далее".
  3. Выберите расположение папки или примите значение по умолчанию, а затем нажмите кнопку "Готово".
  4. В профиле публикации выберите "Показать все параметры".
  5. Задайте для режима развертыванияавтономный режим.
  6. Установите целевую среду выполнения на нужную платформу (например, win-x64 для 64-разрядных Windows).
  7. Нажмите кнопку "Сохранить " и " Опубликовать".

Развертывание с одним файлом

При публикации приложения в виде однофайлового развертывания все файлы, зависящие от приложений, объединяются в один двоичный файл. Эта модель развертывания доступна как для приложений, зависящих от платформы, так и для автономных приложений, обеспечивая привлекательный вариант развертывания и распространения приложения в виде одного файла.

Однофайловые приложения всегда зависят от ОС и архитектуры. Для каждой конфигурации необходимо опубликовать такие конфигурации, как Linux x64, Linux Arm64, Windows x64 и т. д.

Преимущества

  • Упрощенное распределение: развертывание и распространение приложения в виде одного исполняемого файла.
  • Сокращенный простой файл: все зависимости упаковываются, устраняя необходимость управления несколькими файлами.
  • Простое развертывание: скопируйте один файл для развертывания приложения.

Недостатки

  • Более крупный размер файла: один файл содержит все зависимости, что делает его больше отдельных файлов.
  • Медленный запуск: файлы должны быть извлечены во время выполнения, что может повлиять на производительность запуска.
  • Для конкретной платформы: необходимо публиковать отдельные файлы для каждой целевой платформы.

Развертывание с одним файлом можно объединить с другими оптимизациями, такими как обрезка и компиляция ReadyToRun для дальнейшей оптимизации.

Дополнительные сведения о развертывании с одним файлом см. в разделе "Развертывание с одним файлом".

Опубликовать

dotnet publish -c Release -r <RID> -p:PublishSingleFile=true
  • -c Release

    Этот переключатель задает конфигурацию сборки для выпуска, оптимизированную для развертывания в рабочей среде.

  • -r <RID>

    Этот параметр использует идентификатор среды выполнения (RID), чтобы указать целевую платформу и обеспечить включение собственных зависимостей (при необходимости). Список идентификаторов среды выполнения см. в каталоге идентификаторов среды выполнения (RID).

  • -p:PublishSingleFile=true

    Это свойство объединяет все файлы, зависящие от приложений, в один двоичный файл.

  1. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите "Опубликовать".
  2. Если это первая публикация, выберите папку в качестве целевого объекта публикации и нажмите кнопку "Далее".
  3. Выберите расположение папки или примите значение по умолчанию, а затем нажмите кнопку "Готово".
  4. В профиле публикации выберите "Показать все параметры".
  5. Задайте для режима развертыванияавтономный или зависимый от платформы режим.
  6. Установите целевую среду выполнения на нужную платформу (например, win-x64 для 64-разрядных Windows).
  7. Проверьте создание одного файла.
  8. Нажмите кнопку "Сохранить " и " Опубликовать".

Развертывание AOT в собственном коде

Развертывание AOT в машинном коде компилирует приложение непосредственно в машинный код, устраняя необходимость выполнения. Этот параметр публикации использует автономный режим развертывания , так как скомпилированный машинный код должен включать все необходимое для запуска приложения. Это приводит к более быстрому времени запуска и сокращению использования памяти, но имеет некоторые ограничения на поддерживаемые функции.

Преимущества

  • Быстрый запуск: не требуется компиляция JIT во время выполнения, что приводит к более быстрому запуску приложения.
  • Сокращение использования памяти: снижение объема памяти по сравнению с традиционными приложениями .NET.
  • Нет зависимостей среды выполнения: приложение выполняется без установки среды выполнения .NET.
  • Меньший размер развертывания: часто меньше автономного развертывания с полной средой выполнения.

Недостатки

  • Ограниченная поддержка платформы. Не все функции и библиотеки .NET совместимы с машинным AOT.
  • Продолжительное время сборки: компиляция в машинный код занимает больше времени, чем обычные сборки.
  • Для конкретной платформы: необходимо скомпилировать отдельно для каждой целевой платформы и архитектуры.
  • Ограничения отладки: более сложный процесс отладки по сравнению с обычными приложениями .NET.

Дополнительные сведения о развертывании Машинного AOT см. в статье "Машинное развертывание AOT".

Опубликовать

dotnet publish -c Release -r <RID> -p:PublishAot=true
  • -c Release

    Этот переключатель задает конфигурацию сборки для выпуска, оптимизированную для развертывания в рабочей среде.

  • -r <RID>

    Этот параметр использует идентификатор среды выполнения (RID), чтобы указать целевую платформу и обеспечить включение собственных зависимостей (при необходимости). Список идентификаторов среды выполнения см. в каталоге идентификаторов среды выполнения (RID).

  • -p:PublishAot=true

    Это свойство включает компиляцию Native AOT, которая компилирует приложение непосредственно в машинный код.

Публикация AOT в машинном коде должна быть настроена в файле проекта. Его нельзя включить с помощью пользовательского интерфейса публикации Visual Studio.

  1. В обозревателе решений щелкните проект правой кнопкой мыши и выберите "Изменить файл проекта".

  2. Добавьте в следующее <PropertyGroup>свойство:

    <PublishAot>true</PublishAot>
    
  3. Сохраните файл проекта.

  4. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите "Опубликовать".

  5. Если это первая публикация, выберите папку в качестве целевого объекта публикации и нажмите кнопку "Далее".

  6. Выберите расположение папки или примите значение по умолчанию, а затем нажмите кнопку "Готово".

  7. В профиле публикации выберите "Показать все параметры".

  8. Задайте для режима развертыванияавтономный режим.

  9. Установите целевую среду выполнения на нужную платформу (например, win-x64 для 64-разрядных Windows).

  10. Нажмите кнопку "Сохранить " и " Опубликовать".

Дополнительные сведения о развертывании Машинного AOT см. в статье "Машинное развертывание AOT".

Развертывание ReadyToRun

При публикации приложения с компиляцией ReadyToRun сборки приложения компилируются как формат ReadyToRun (R2R). R2R — это форма предварительной компиляции (AOT), которая повышает производительность запуска, уменьшая объем работы JIT-компилятора, который должен выполняться при загрузке приложения. Этот параметр публикации можно использовать как с режимами развертывания, зависящими от платформы , так и с автономными режимами развертывания.

Двоичные файлы ReadyToRun содержат код промежуточного языка (IL) и собственную версию одного и того же кода. Хотя двоичные файлы R2R больше обычных сборок, они обеспечивают лучшую производительность запуска.

Преимущества

  • Улучшено время запуска: приложение тратит меньше времени на запуск компилятора JIT во время запуска.
  • Улучшена производительность первого использования: снижение задержки при первом выполнении путей кода.
  • Совместим с существующим кодом: работает с большинством библиотек и платформ .NET без изменений.
  • Гибкое развертывание: можно сочетать как с автономным развертыванием , так и с автономным режимом развертывания .

Недостатки

  • Больший размер: приложение больше на диске из-за включения как IL, так и машинного кода.
  • Продолжительное время сборки: компиляция занимает больше времени, чем стандартная публикация.
  • Оптимизации для конкретной платформы: для повышения производительности требуется целевая платформа.

Опубликовать

dotnet publish -c Release -r <RID> -p:PublishReadyToRun=true
  • -c Release

    Этот переключатель задает конфигурацию сборки для выпуска, оптимизированную для развертывания в рабочей среде.

  • -r <RID>

    Этот параметр использует идентификатор среды выполнения (RID), чтобы указать целевую платформу и обеспечить включение собственных зависимостей (при необходимости). Список идентификаторов среды выполнения см. в каталоге идентификаторов среды выполнения (RID).

  • -p:PublishReadyToRun=true

    Это свойство включает компиляцию ReadyToRun, которая повышает производительность запуска путем предварительной компиляции сборок.

  1. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите "Опубликовать".
  2. Если это первая публикация, выберите папку в качестве целевого объекта публикации и нажмите кнопку "Далее".
  3. Выберите расположение папки или примите значение по умолчанию, а затем нажмите кнопку "Готово".
  4. В профиле публикации выберите "Показать все параметры".
  5. Задайте для режима развертыванияавтономный или зависимый от платформы режим.
  6. Установите целевую среду выполнения на нужную платформу (например, win-x64 для 64-разрядных Windows).
  7. Проверьте включение компиляции ReadyToRun.
  8. Нажмите кнопку "Сохранить " и " Опубликовать".

Дополнительные сведения о развертывании ReadyToRun см. в разделе "Компиляция ReadyToRun".

Развертывание контейнера

При публикации приложения в качестве контейнера пакет SDK для .NET упаковает приложение и его зависимости в образ контейнера, не требуя отдельного файла Dockerfile. Этот режим развертывания создает полный образ контейнера, который можно запустить в любой среде выполнения контейнера, например Docker или Podman. Развертывание контейнеров упрощает процесс контейнеризации, устраняя необходимость записи и обслуживания файлов Dockerfile, обеспечивая оптимизированные базовые образы.

Начиная с пакета SDK для .NET 8.0.200 поддержка контейнеров включена по умолчанию и не требует дополнительных пакетов NuGet. Для консольных приложений может потребоваться явно включить поддержку контейнеров, задав EnableSdkContainerSupport для свойства значение true.

Совет

Дополнительные сведения о параметрах проекта, связанных с контейнерами, см. в справочнике по приложению .NET.

Преимущества

  • Упрощенная контейнеризация: для базовых сценариев не требуется записывать или поддерживать Файлы Dockerfile.
  • Оптимизированные базовые образы: использует оптимизированные базовые образы корпорации Майкрософт с последними обновлениями системы безопасности.
  • Согласованная среда: обеспечивает согласованную среду выполнения в среде разработки, тестирования и рабочей среды.
  • Простое распределение. Образы контейнеров можно легко совместно использовать и развертывать в разных средах.
  • Изоляция платформы: приложения выполняются в изолированных контейнерах, уменьшая конфликты между приложениями.

Недостатки

  • Зависимость среды выполнения контейнера: целевая среда должна иметь установленную среду выполнения контейнера.
  • Размер изображения: образы контейнеров обычно больше, чем другие методы развертывания.
  • Кривая обучения. Требуется понимание концепций контейнеров и инструментов.
  • Ограниченная настройка: меньше гибкости по сравнению с пользовательскими файлами Dockerfile для сложных сценариев.

Опубликовать

dotnet publish -c Release [-r <RID>] /t:PublishContainer
  • -c Release

    Этот переключатель задает конфигурацию сборки для выпуска, оптимизированную для развертывания в рабочей среде.

  • -r <RID>

    Этот параметр использует идентификатор среды выполнения (RID), чтобы указать целевую платформу и обеспечить включение собственных зависимостей (при необходимости). Список идентификаторов среды выполнения см. в каталоге идентификаторов среды выполнения (RID).

  • -t:PublishContainer

    Этот целевой объект публикует приложение в виде образа контейнера.

Вы также можете использовать подход профиля публикации:

dotnet publish -c Release [-r <RID>] -p:PublishProfile=DefaultContainer
  • -p:PublishProfile=DefaultContainer

    Этот профиль активирует процесс публикации контейнеров.

  1. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите "Опубликовать".
  2. Выберите реестр контейнеров в качестве целевого объекта публикации и нажмите кнопку "Далее".
  3. Выберите целевой реестр контейнеров (например, реестр контейнеров Azure, Центр Docker или универсальный реестр) и нажмите кнопку "Далее".
  4. Настройте сведения о подключении реестра и проверку подлинности.
  5. В профиле публикации выберите "Показать все параметры".
  6. Задайте для режима развертыванияавтономный или зависящий от платформы режим развертывания в зависимости от ваших потребностей.
  7. Установите целевую среду выполнения на нужную платформу (например, linux-x64 для контейнеров Linux).
  8. Настройте параметры, относящиеся к контейнеру, такие как имя образа и теги.
  9. Нажмите кнопку "Сохранить " и " Опубликовать".

Дополнительные сведения о развертывании контейнеров см. в обзоре создания контейнера пакета SDK для .NET.

См. также