Публикация распаковки приложения .NET MAUI для Windows с помощью ИНТЕРФЕЙСА командной строки

При распространении приложения .NET Multi-platform App UI (.NET MAUI) для Windows можно опубликовать приложение и его зависимости в папку для развертывания в другой системе.

Настройка параметров сборки проекта

Добавьте следующий <PropertyGroup> узел в файл проекта. Эта группа свойств обрабатывается только в том случае, если целевая платформа — Windows, а конфигурация задана.Release Этот раздел конфигурации выполняется всякий раз, когда выполняется сборка или публикация в Release режиме.

<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
    <RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>

В <PropertyGroup> примере необходимо обойти ошибку в пакете SDK для приложений Windows. Дополнительные сведения об ошибке см. в статье о проблеме WindowsAppSDK #3337.

Публикация

Чтобы опубликовать приложение, откройте командную строку разработчика для терминала VS 2022 и перейдите в папку для проекта приложения .NET MAUI. dotnet publish Выполните команду, указав следующие параметры:

Параметр Значение
-f Целевая платформа, которая является net8.0-windows{version}. Это значение является windows TFM, например net8.0-windows10.0.19041.0. Убедитесь, что это значение идентично значению узла в <TargetFrameworks>CSPROJ-файле .
-c Конфигурация сборки, которая является Release.
-p:RuntimeIdentifierOverride=win10-x64
- или -
-p:RuntimeIdentifierOverride=win10-x86
Избегает ошибки, подробно описанной в проблеме WindowsAppSDK #3337. -x64 Выберите или -x86 версию параметра на основе целевой платформы.
-p:WindowsPackageType Тип пакета, который предназначен None для распакованных приложений.
-p:WindowsAppSDKSelfContained Режим развертывания приложения, который может быть зависимым от платформы или автономным. Это значение должно быть true для автономных приложений. Дополнительные сведения о приложениях, зависящих от платформы и автономных приложениях, см. в обзоре развертывания пакета SDK для приложений Windows.

Предупреждение

Попытка опубликовать решение .NET MAUI приведет dotnet publish к попытке опубликовать каждый проект в решении по отдельности, что может привести к проблемам при добавлении других типов проектов в решение. dotnet publish Поэтому команда должна быть область в проект приложения .NET MAUI.

Рассмотрим пример.

dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None

Примечание.

В .NET 8 dotnet publish команда по умолчанию использует Release конфигурацию. Поэтому конфигурация сборки может быть опущена из командной строки.

Публикация создает приложение, копируя исполняемый файл в папку bin\Release\net8.0-windows10.0.0.19041.0\win10-x64\publish . В этой папке есть exe-файл , и это встроенное приложение. Это приложение можно запустить или всю папку можно скопировать на другой компьютер и запустить там.

Важное различие от упаковаемого приложения заключается в том, что это не будет включать среду выполнения .NET в папку. Это означает, что приложению потребуется сначала установить среду выполнения .NET на компьютерах, которые в конечном итоге будут запускать приложение. Чтобы приложение также содержало все компоненты среды выполнения, -p:WindowsAppSDKSelfContained аргумент можно указать при публикации. Например:

dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None -p:WindowsAppSDKSelfContained=true

Дополнительные сведения о команде dotnet publish см. в статье dotnet publish.