CLI ile Windows için paketlenmemiş bir .NET MAUI uygulaması yayımlama

Windows için .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) uygulamanızı dağıtırken, uygulamayı ve bağımlılıklarını başka bir sisteme dağıtım için bir klasöre yayımlayabilirsiniz.

Proje derleme ayarlarını yapılandırma

Proje dosyanıza aşağıdaki <PropertyGroup> düğümü ekleyin. Bu özellik grubu yalnızca hedef çerçeve Windows olduğunda ve yapılandırma olarak Releaseayarlandığında işlenir. Bu yapılandırma bölümü, bir derleme veya yayımlama modunda Release her çalıştırıldığında çalışır.

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

<PropertyGroup> Örnekteki, Windows Uygulama SDK'sı'ndaki bir hatayı geçici olarak çözmek için gereklidir. Hata hakkında daha fazla bilgi için bkz . WindowsAppSDK Sorunu #3337.

Yayımlama

Uygulamanızı yayımlamak için VS 2022 terminali için Geliştirici Komut İstemi'ni açın ve .NET MAUI uygulama projenizin klasörüne gidin. dotnet publish Komutunu çalıştırarak aşağıdaki parametreleri sağlayın:

Parametre Value
-f Hedef çerçeve olan net8.0-windows{version}. Bu değer, gibi net8.0-windows10.0.19041.0bir Windows TFM'dir. Bu değerin .csproj dosyanızdaki düğümdeki <TargetFrameworks> değerle aynı olduğundan emin olun.
-c Derleme yapılandırmasıdır Release.
-p:RuntimeIdentifierOverride=win10-x64
- veya -
-p:RuntimeIdentifierOverride=win10-x86
WindowsAppSDK Sorunu #3337'de ayrıntılı olarak açıklanan hatayı önler. -x64 Hedef platformunuza göre parametrenin veya -x86 sürümünü seçin.
-p:WindowsPackageType Paketlenmemiş uygulamalar için olan None paket türü.
-p:WindowsAppSDKSelfContained Uygulamanızın çerçeveye bağımlı veya bağımsız olabilecek dağıtım modu. Bu değer, bağımsız uygulamalar için olmalıdır true . Çerçeveye bağımlı uygulamalar ve bağımsız uygulamalar hakkında daha fazla bilgi için bkz . Windows Uygulama SDK'sı dağıtımına genel bakış.

Uyarı

.NET MAUI çözümünü yayımlamaya çalışmak, komutun dotnet publish çözümdeki her projeyi tek tek yayımlamaya çalışmasıyla sonuçlanır ve bu da çözümünüze başka proje türleri eklediğinizde sorunlara neden olabilir. Bu nedenle, komutun dotnet publish kapsamı .NET MAUI uygulama projeniz olarak belirlenmiş olmalıdır.

Örneğin:

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

Not

.NET 8'de dotnet publish komut varsayılan olarak yapılandırmaya sahiptir Release . Bu nedenle, derleme yapılandırması komut satırından atlanabilir.

Yayımlama, yürütülebilir dosyayı bin\Release\net8.0-windows10.0.19041.0\win10-x64\publish klasörüne kopyalayarak uygulamayı derler. Bu klasörde bir exe dosyası ve bu da yerleşik uygulamadır. Bu uygulama başlatılabilir veya klasörün tamamı başka bir makineye kopyalanıp orada başlatılabilir.

Paketlenmiş bir uygulamadan önemli bir ayrım, klasöre .NET çalışma zamanının dahil olmayacağıdır. Bu, uygulamanın .NET çalışma zamanının sonunda uygulamayı çalıştıracak makinelere yüklenmesini gerektireceği anlamına gelir. Uygulamanın tüm çalışma zamanı bileşenlerini de içerdiğinden emin olmak için, bağımsız değişken yayımlanırken -p:WindowsAppSDKSelfContained sağlanabilir. Örneğin:

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

Komut hakkında dotnet publish daha fazla bilgi için bkz . dotnet publish.