Публикация распаковки приложения .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.