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


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

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

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

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

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

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

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

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

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

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

Это важно

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

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

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

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

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

dotnet publish -c Release -f net9.0

Каталог используется по умолчанию в качестве выходного для команды . Например, публикует в . Однако вы можете выбрать упрощенный выходной путь и структуру папок для всех выходных данных сборки. Дополнительные сведения см. в разделе " Макет выходных данных артефактов".

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

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

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

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

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

Нативные зависимости

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

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

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

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

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

  • -r <RID>

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

  1. Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите Publish.
  2. Если это первая публикация, выберите папку в качестве целевого объекта публикации и нажмите кнопку "Далее".
  3. Выберите расположение папки или примите значение по умолчанию, а затем нажмите кнопку "Готово".
  4. В профиле публикации выберите "Показать все параметры".
  5. Задайте Target Runtime для требуемой платформы (например, win-x64 для 64-разрядной #REF!).
  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 на #REF! или только myapp на других платформах.

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

Публикация развертывания, зависящего от платформы, создает приложение, которое автоматически переходит на последнее исправление безопасности .NET, доступное в среде, в которой запущено приложение. Дополнительные сведения о привязке версий во время компиляции см. в разделе Select the .NET version to use.

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

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

Недостатки

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

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

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

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

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

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

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

  • -r <RID>

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

Или явно:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • -p:UseAppHost=false

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

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

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

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

Публикация автономного развертывания (SCD) создает приложение, которое не обновляется до последнего доступного исправления безопасности .NET. Дополнительные сведения о привязке версий во время компиляции см. в разделе Select the .NET version to use.

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

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

Недостатки

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

Совет

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

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

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

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

  • -r <RID>

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

  • --self-contained true

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

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

Однофайловое развертывание

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

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

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

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

Недостатки

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

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

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

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

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

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

  • -r <RID>

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

  • -p:PublishSingleFile=true

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

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

Развертывание нативного AOT

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

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

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

Недостатки

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

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

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

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

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

  • -r <RID>

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

  • -p:PublishAot=true

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

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

  1. В Обозреватель решений щелкните проект правой кнопкой мыши и выберите файл проекта Edit Project File.

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

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

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

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

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

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

  8. Установите режим развертывания на автономный.

  9. Задайте Target Runtime для требуемой платформы (например, win-x64 для 64-разрядной #REF!).

  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

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

  • -r <RID>

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

  • -p:PublishReadyToRun=true

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

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

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

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

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

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

Совет

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

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

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

Недостатки

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

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

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

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

  • -r <RID>

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

  • -t:PublishContainer

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

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

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

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

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

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

См. также