Proje özellikleri ve otomatik başlatıcılar

Bu konuda, otomatik başlatıcıları yapılandırma da dahil olmak üzere uygulamanızın dağıtılma şeklini özelleştirmek için Visual Studio project dosyanızda ayarlayabileceğiniz project özellikleri (.csproj veya .vcxproj gibi) açıklanmaktadır.

Windows Uygulama SDK'sı'deki otomatik başlatıcılar

Windows Uygulama SDK'sı'de, Windows Uygulaması Çalışma Zamanı'nın doğru bir şekilde başlatıldığından emin olmak için birkaç rutin bulunmaktadır. Bu yordamlar, uygulamanızın giriş noktasından önce otomatik olarak çalıştırıldığından ve sizin için başlatma işi yaptıklarından otomatik başlatıcılar olarak bilinir.

Tavsiye

Teknik ayrıntıları merak ediyorsanız. C++'ta, statik sınıf oluşturucu ile otomatik başlatıcı uygulanır. C# dilinde, bir .NET modülü başlatıcısı ile otomatik başlatıcı uygulanır. Bu nedenle bazen uygun terim otomatik başlatıcı olduğunda modül başlatıcı teriminin kullanıldığını duyabilirsiniz.

Otomatik başlatıcıların tümü, uygulamanızın paketleme ve dağıtım yapılandırmasına bağlı olarak varsayılan olarak koşullu olarak etkinleştirilir. Bunlar hakkında ayrıntılar şunlardır:

  • Önyükleyici (dinamik bağımlılıklar olarak da bilinir) otomatik başlatıcı. Bu otomatik başlatıcı, uygulama başlangıcında önyükleyici API'sini otomatik olarak çağırır. Windows Uygulaması Çalışma Zamanı'nın uygulamanın paket grafiğine eklendiğinden emin olmak için çerçeveye bağımlı paketlenmemiş uygulamalar için gereklidir. Çerçeveye bağımlı (ve bağımsız) uygulamalar hakkında bilgi için bkz. Windows Uygulama SDK'sı dağıtımına genel bakış. Paketlenmemiş (ve paketlenmiş) uygulamalar hakkında bilgi için bkz . Windows uygulamaları: paketleme, dağıtım ve işlem.
    • Paketlenmiş bir uygulamada, appxmanifest.xml dosyası çerçeve bağımlılığını ifade ettiğinden, önyükleyici/dinamik bağımlılıkları otomatik başlatıcıya gerek yoktur. Bağımsız bir uygulama için önyükleyici/dinamik bağımlılıklar otomatik başlatıcıya ihtiyacınız yoktur çünkü bu uygulamalar çerçeveyi kullanmaz.
    • .csproj aracılığıyla .vcxproj veya <WindowsAppSdkBootstrapInitialize>false</WindowsAppSdkBootstrapInitialize> dosyanızda önyükleyici/dinamik bağımlılıklar otomatik başlatıcısını devre dışı bırakabilirsiniz.
  • Deployment Manager otomatik başlatıcısı. Bu, ana/tekil işlevselliği kullanan çerçeveye bağımlı paketlenmiş uygulamalar için gereklidir (örneğin, anında iletme bildirimleri), çünkü appxmanifest.xml dosya bu bağımlılıkları ifade edemez.
    • Bağımsız bir uygulama için Deployment Manager otomatik başlatıcıya ihtiyacınız yoktur çünkü bu uygulamalar ana/tekil işlevselliği desteklemez.
    • Daha önemli bilgiler için bu konunun devamında yer alan Deployment Manager otomatik başlatıcı bölümüne bakın.
  • Otomatik kayıt gerektirmeyen etkinleştirme başlatıcısı. Uygulama, Windows 10 Mayıs 2019 Güncelleştirmesi'nden (sürüm 1903; kod adı "19H1") daha önceki bir işletim sistemi sürümünde çalışıyorsa, bağımsız bir uygulamanın bildirim tabanlı çıkarılmış kayıtsız Windows Çalışma Zamanı (WinRT) etkinleştirmesini (UndockedRegFreeWinRT) kullanabilmesi için bu gereklidir.
    • Çerçeveye bağımlı uygulamalar ve Windows 10, sürüm 1903 veya sonraki sürümleri hedefleyen bağımsız uygulamalar için kayıtsız etkinleştirme otomatik başlatıcıya ihtiyacınız yoktur. Bu uygulamalar <WindowsAppSdkUndockedRegFreeWinRTInitialize>false</WindowsAppSdkUndockedRegFreeWinRTInitialize> üzerinden vazgeçebilir.
  • Uyumluluk otomatik başlatıcısı. Bu, bir uygulamanın hizmet yayınlama davranışını denetlemek için A/B kapsama tesislerini kullanması için gereklidir. Daha fazla bilgi için bkz . RuntimeCompatibilityOptions.
    • A/B kapsaması kullanmayan uygulamalarda (varsayılan olan), uyumluluk otomatik başlatıcısı gerekmez.

Deployment Manager otomatik başlatıcısı

Windows Uygulama SDK'sı 1.8 veya üzerini kullanan bir uygulama başlatıldığında, Deployment Manager otomatik başlatıcı varsayılan olarak çalışır. Ama bunun olmasını geri çevirebilirsiniz. Bu bölümde, Deployment Manager otomatik başlatıcısının çalışmasına izin vermenin avantajları ve uyarıları açıklanmaktadır ve geri çevirip vazgeçmeyeceğiniz konusunda karar vermenize yardımcı olur.

Uygulamanızın Main/Singleton paketlerindeki işlevleri kullanabilmesi için (örneğin anında iletme bildirimleri): 1. Bu paketlerin dağıtıldığından emin olmak için Dağıtım API'sini kullanmanız gerekir (Çünkü Main/Singleton paketleri çerçeveler değil, uygulamalar gibi "ana" paketlerdir; bu nedenle uygulamanızın appx bildiriminde bağımlılık olarak kaydedilemezler. Bunun yerine Dağıtım API'si bu paketleri dağıtma işlevselliğini sağlar). 2. 1 nedeniyle uygulamanızın DeploymentManager.Initialize öğesinin çağrılmasına neden olarak Deployment Manager'ı başlatması gerekir. Uygulamanız bunu göreceğimiz gibi otomatik olarak veya açıkça yapabilir. 3. Uygulamanızın Main/Singleton paketlerine bağımlılık alması için çerçeveye bağımlı paketlenmiş bir uygulama olması gerekir.

Deployment Manager'ı başlatmanın bir yolu, Deployment Manager otomatik başlatıcısının çalışmasına izin vermektir (bu konunun önceki bölümlerinde yer alan Windows Uygulama SDK'sı Auto-initializers bölümüne bakın). Deployment Manager otomatik başlatıcısı sizin için DeploymentManager.Initialize öğesini çağırır. Deployment Manager'ı başlatmanın diğer yolu, DeploymentManager.Initialize öğesini açıkça çağırmaktır .

Uygulamanızın (Windows Uygulama SDK'sı 1.8 veya üzerini kullanarak) Main/Singleton paketlerine ihtiyacı yoksa, ardından uygulamanızın project dosyasında WindowsAppSdkDeploymentManagerInitialize özelliğini false olarak ayarlayarak Deployment Manager otomatik başlatıcısını geri çevirmeniz gerekir.

Uygulamanızın (Windows Uygulama SDK'sı 1.8 veya üzerini kullanarak) does Main/Singleton paketlerine ihtiyacı varsa şunları yapabilirsiniz:

  • Deployment Manager otomatik başlatıcısının çalışmasına izin ver (varsayılan olarak çalışır),
  • veya uygulamanızın project dosyasında WindowsAppSdkDeploymentManagerInitialize özelliğini false olarak ayarlayarak Deployment Manager otomatik başlatıcısını geri çevirebilirsiniz. Ardından DeploymentManager.Initialize öğesini açıkça çağırmalısınız.

Önemli

AppContainer'da çalışan herhangi bir işlem için DeploymentManager.Initialize öğesinin çağrılmasına neden olursanız uygulamanızın packageManagementpaket bildiriminizdekısıtlanmış özelliği bildirmesi gerekir.

Project özellikleri

Aşağıdaki tabloda, uygulamanızın project dosyasında ayarlayabileceğiniz özellikler yer alır. Windows Uygulama SDK'sı otomatik başlatıcılar hakkında ayrıntılı bilgi için önceki bölüme (yukarıdaki) bakın.

Özellik adı ve açıklaması Değerler Daha fazla bilgi için
AppxPackage. WinUI uygulamasının paketlenip paketlenmediğini belirtir. false (paketlenmemiş bir uygulama için) veya yok (paketlenmiş bir uygulama için) WinUI uygulamasının paketini açma
EnableMsixTooling. Bir proje için tek proje MSIX özelliğini etkinleştirir. true (etkinleştirmek için) veya yok (devre dışı bırakmak için) Tek proje MSIX kullanarak uygulamanızı pakete alın
UseCrtSDKReferenceStaticWarning. Hibrit CRT kullanılarak kendi kendine yeten dağıtım için gerekli olan, paketlenmiş bir C++ uygulaması CRT'yi statik olarak bağladığında tetiklenen derleme uyarısını bastırır. Karma CRT'yi seçen paketlenmiş uygulama projelerinde false olarak ayarlayın. false (paketlenmiş bağımsız uygulamalarda uyarıyı engellemek için) veya yok (varsayılan, uyarı etkin) Bağımsız uygulamalar için Windows Uygulama SDK'sı dağıtım kılavuzu
UseWinUI. Uygulamanızda WinUI kullanıcı arabirimi çerçevesini kullanıp kullanmadığınızı belirtir. true veya yok ( false için) Windows Uygulama SDK'sinde (WinUI) WinUI
WindowsAppSDKSingleFileVerifyConfiguration. PublishSingleFile ayarlandığında SDK'nın derleme sırasında bir doğrulama hedefi çalıştırıp çalıştırmayacağını denetler. Etkinleştirildiğinde (varsayılan olarak), hedef, gerekli özellikler eksikse (WindowsPackageType=None, IncludeAllContentForSelfExtract, ) EnableMsixTooling ve self-contained ayarları yoksa (WindowsAppSDKSelfContained, SelfContained) uyarılar oluşturur. Yalnızca tüm denetimleri engellemek için false olarak ayarlayın; örneğin, uyumluluğu el ile doğruladığınız CI işlem hatlarında. true (varsayılan — doğrulama çalıştırmaları), false (tüm denetimleri gizleme) Microsoft.WindowsAppSDK.SingleFile.targets içinde tanımlanır (PublishSingleFile ayarlandığında NuGet paketi tarafından otomatik olarak eklenir)
WindowsAppSdkBootstrapInitialize. Windows Uygulama SDK'sı'nin önyükleyici/dinamik bağımlılıklar otomatik başlatıcısından yararlanıp yararlanmadığını belirler. true (yürütülebilir dosyalar için varsayılan), false (yürütülemeyenler için varsayılan) Otomatik başlatıcıları geri çevirme (veya başlatma)
WindowsAppSdkDeploymentManagerInitialize. Windows Uygulama SDK'sı Deployment Manager otomatik başlatıcıdan yararlanıp yararlanmayacağını belirler. true (varsayılan), false
WindowsAppSDKRuntimePatchLevel1, WindowsAppSDKRuntimePatchLevel2 ve WindowsAppSDKDisabledChanges. Windows Uygulama SDK'sı'nin uyumluluk otomatik başlatıcıdan yararlanıp yararlanmayacağını belirler ve hizmet güncelleştirmelerine eklenen değişikliklerin Windows Uygulaması Runtime davranışını nasıl etkilediğine göre istenen uyumluluk seçeneklerini yapılandırır. Çeşitli veya yok (otomatik başlatıcıyı devre dışı bırakmak için) RuntimeCompatibilityOptions
WindowsAppSDKSelfContained. Bir uygulamanın bağımsız olarak dağıtılıp dağıtılmayacağını belirler. true veya yok ( false için) Bağımsız uygulamalar için Windows Uygulama SDK'sı dağıtım kılavuzu
WindowsAppSdkUndockedRegFreeWinRTInitialize. Windows Uygulama SDK'sı Kayıtsız etkinleştirme otomatik başlatıcıdan yararlanıp yararlanmayacağını belirler. true (yürütülebilir dosyalar için varsayılan), false (yürütülemeyenler için varsayılan) Otomatik UndockedRegFreeWinRT desteğini geri çevirme
WindowsPackageType. Paketlenmemiş bir uygulamanın ayarlanması<WindowsPackageType>None</WindowsPackageType>, önyükleyici/dinamik bağımlılıklar otomatik başlatıcısının uygulamanız için en uygun Windows Uygulama SDK'sı sürümünü bulmasına ve yüklemesine neden olur. Yok veya yok (otomatik başlatıcıyı devre dışı bırakmak için) WinUI uygulamasının paketini açma

Arka planda otomatik başlatıcıları devre dışı bırakma

Example

Aşağıda, C# WinUI 3 project için tipik bir .csproj dosyasından, kullanımda olan yukarıdaki tablodan bazı project özelliklerini gösteren bir alıntı verilmiştir.

...
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    ...
    <UseWinUI>true</UseWinUI>
    <EnableMsixTooling>true</EnableMsixTooling>
  </PropertyGroup>
...