Eğitim: Windows Uygulama SDK'sı kullanan, dış konumla paketlenmiş ya da paketlenmemiş bir uygulamada Önyükleyici API'sini kullanma

Bu makalede, MSIX kullanılarak yüklenmemiş (dış konumla paketlenmiş veya paketlenmemiş) bir uygulamanın, Windows Uygulama SDK'sı çalışma zamanını belirgin biçimde yüklemek ve Windows Uygulama SDK'sı API'lerini çağırmak için önyükleyici API'sini kullanacak şekilde nasıl yapılandırılacağı gösterilmektedir. MSIX aracılığıyla yüklenmeyen uygulamalar dış konumla paketlenmiş uygulamalar ve paketlenmemiş uygulamalar içerir.

Önemli

Windows Uygulama SDK'sı 1.0 sürümünden itibaren, harici bir konumdan veya paketlenmemiş bir uygulamadan Windows Uygulama SDK'sı'yı yüklemek için varsayılan yaklaşım, proje özelliği aracılığıyla <WindowsPackageType> kullanmaktır (ayrıca ek yapılandırma değişiklikleri yapmak). WinUI 3 project bağlamında otomatik başlatmayla ilgili adımlar için bkz. İlk WinUI project oluşturma. WinUI olmayan bir projeniz varsa, bkz. Mevcut bir projede Windows Uygulama SDK'sı'yi kullanma.

Gelişmiş gereksinimleriniz varsa (özel hata işleme veya Windows Uygulama SDK'sı belirli bir sürümünü yüklemek gibi), bunun yerine önyükleyici API'sini açıkça çağırabilirsiniz. Ve bu konu başlığında da bu yaklaşım gösterilmektedir. Ayrıca, daha fazla bilgi için bkz. Dış konumla paketlenmiş veya paketlenmemiş uygulamalar için Windows Uygulama SDK'sı çalışma zamanını kullanma.

Bu konuda, temel bir konsol uygulama projesinden önyükleyici API'sinin açıkça nasıl çağrılacağı gösterilmektedir. Ancak bu adımlar, Windows Uygulama SDK'sı kullanan paketlenmemiş tüm masaüstü uygulamaları için de geçerlidir.

Bu öğreticiyi tamamlamadan önce Runtime mimarisi gözden geçirerek uygulamanızın Windows Uygulama SDK'sı kullanırken aldığı Framework paket bağımlılığı ve dış konum veya paketlenmemiş bir uygulamada çalışmak için gereken ek bileşenler hakkında daha fazla bilgi edinmenizi öneririz.

Önkoşullar

  1. Windows Uygulama SDK'sı için araçları yükleyin.
  2. Dış konumla paketlenmiş ve paketlenmemiş uygulamalar için tüm bağımlılıkların yüklendiğinden emin olun (dış konumla paketlenmiş veya paketlenmemiş çerçeveye bağımlı uygulamalar için Windows Uygulama SDK'sı dağıtım kılavuzuna bakın). Bunu yapmanın kolay bir yolu, Windows Uygulama SDK'sı çalışma zamanı yükleyicisini çalıştırmaktır.

Yönergeler

C# veya C++ project kullanarak bu öğreticiyi izleyebilirsiniz.

Uyarı

Dinamik bağımlılıklar ve önyükleyici API'leri yükseltilmiş bir işlem tarafından çağrıldığında başarısız olur. Sonuç olarak, Visual Studio yükseltilmiş olarak başlatılmamalıdır. Daha fazla bilgi için bkz. Dynamic Dependencies yükseltmeyi desteklemiyor #567.

Dış konumla paketlenmiş veya paketten çıkarılmış bir C# WinUI projesini yapılandırmak için bu yönergeleri izleyin.

  1. Visual Studio'da yeni bir C# Console App project oluşturun. project DynamicDependenciesTest olarak adlandırın. Projeyi oluşturduktan sonra bir "Hello, World!" C# konsol uygulamanız olmalıdır.

  2. Ardından, projenizi yapılandırın.

    1. Çözüm Gezgini'da project sağ tıklayın ve Project Dosyasını Düzenle'i seçin.
    2. TargetFramework öğesinin değerini Hedef Çerçeve Takma Adıyladeğiştirin. Örneğin, uygulamanız Windows 10 sürüm 2004'i hedeflediyse aşağıdakileri kullanın.
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    
    1. project dosyasını kaydedin ve kapatın.
  3. Çözümünüzün platformunu x64olarak değiştirin. .NET project varsayılan değeri AnyCPU'dır, ancak WinUI bu platformu desteklemez.

    1. Build>Yapılandırma Yöneticisi'yi seçin.
    2. Etkin çözüm platformu altındaki açılan listeyi seçin ve Yeni 'a tıklayarak Yeni Çözüm Platformu iletişim kutusunu açın.
    3. Türü altındaki açılır listedeki yeni platformuseçin ve x64öğesini seçin.
    4. Tamam’a tıklayarak Yeni Çözüm Platformu iletişim kutusunu kapatın.
    5. Yapılandırma Yöneticisi'da Close öğesine tıklayın.
  4. Projenize Windows Uygulama SDK'sı NuGet paketini yükleyin.

    1. Çözüm Gezgini'da Dependencies düğümüne sağ tıklayın ve NuGet Paketlerini Yöneti seçin.
    2. NuGet Paket Yöneticisi penceresinde Browse sekmesini seçin ve Microsoft.WindowsAppSDK paketini yükleyin.
  5. Artık önyükleyici API'sini kullanmaya hazırsınız (bkz. Windows Uygulama SDK'sı framework paketine dinamik olarak bağımlılık almak için dış konumla paketlenmiş veya paketlenmemiş) uygulamalar için Windows Uygulama SDK'sı çalışma zamanını kullanın. Bu, uygulamanızda Windows Uygulama SDK'sı API'lerini kullanmanıza olanak tanır.

    Program.cs kod dosyasını açın ve bootstrap.Initialize yöntemini çağırarak önyükleyiciyi başlatmak için varsayılan kodu aşağıdaki kodla değiştirin. Bu kod, önyükleyici başlatılırken uygulamanın hangi Windows Uygulama SDK'sı sürümüne bağımlı olduğunu tanımlar.

    Önemli

    Aşağıdaki kodu kendi yapılandırmanıza uyacak şekilde düzenlemeniz gerekir. Yüklediğiniz Windows Uygulama SDK'sı sürümlerinden birini belirtebilmeniz için Bootstrap.Initialize yönteminin parametrelerinin açıklamalarına bakın.

    using System;
    using Microsoft.Windows.ApplicationModel.DynamicDependency;
    
    namespace DynamicDependenciesTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Bootstrap.Initialize(0x00010005);
                Console.WriteLine("Hello, World!");
    
                // Release the DDLM and clean up.
                Bootstrap.Shutdown();
            }
        }
    }
    

    Uyarı

    öğesine geçirilen Bootstrap.Initialize onaltılık değer, uygulamanızın hedeflediği Windows Uygulama SDK'sı çalışma zamanının ana ve ikincil sürümünü kodlar. 0x00010005 sürüm 1.5'i temsil eder. Bu değeri, projenizin başvurduğu Windows Uygulama SDK'sı sürümüyle eşleşecek şekilde güncelleyin (örneğin, 1.6 sürümü için 0x00010006).

    Önyükleyici API'si kökünde, uygulamanızda Windows Uygulama SDK'sı API'lerini kullanmanıza olanak tanıyan yerel bir C/C++ API'dir. Ancak Windows Uygulama SDK'sı 1.0 veya üzerini kullanan bir .NET uygulamasında önyükleyici API için .NET sarmalayıcısını kullanabilirsiniz. Bu sarmalayıcı, bir .NET uygulamasında önyükleyici API'sini çağırmak için yerel C/C++ işlevlerini doğrudan çağırmaktan daha kolay bir yol sağlar. Önceki kod örneği, ön yükleyici API'si için .NET sarmalayıcısındaki Initialize ve Shutdown yöntemlerini çağıran Bootstrap sınıfının statik yöntemleri.

  6. Windows Uygulama SDK'sı çalışma zamanı bileşenlerinin düzgün yüklendiğini göstermek için, dize kaynağını yüklemek için Windows Uygulama SDK'sı ResourceManager sınıfını kullanan bazı kodlar ekleyin.

    1. Projenize yeni bir Resources Dosyası (.resw) ekleyin (varsayılan adı koruyun).

    2. Kaynak dosyası düzenleyicide açıkken aşağıdaki özelliklere sahip yeni bir dize kaynağı oluşturun.

      • Ad: İleti
      • Değer: Merhaba, kaynaklar!
    3. Kaynaklar dosyasını kaydedin.

    4. Program.cs kod dosyasını açın ve satırını aşağıdaki kodla değiştirinConsole.WriteLine("Hello, World!");.

    // Create a resource manager using the resource index generated during build.
       var manager = new Microsoft.Windows.ApplicationModel.Resources.ResourceManager("DynamicDependenciesTest.pri");
    
    // Look up a string in the .resw file using its name.
    Console.WriteLine(manager.MainResourceMap.GetValue("Resources/Message").ValueAsString);
    
    1. Hata Ayıklamadan Başlat (veya Hata Ayıklamayı Başlat) tıklayın, uygulamanızı derlemek ve çalıştırmak için. Dizgi Hello, resources!'ın başarıyla görüntülendiğini görmelisiniz.

Eğer projeniz WPF ise

Windows Presentation Foundation (WPF) uygulaması için bkz. Var olan bir projede Windows Uygulama SDK'sı kullanma.

  • `Harici konumla veya paketlenmemiş olan, çerçeveye bağımlı uygulamalar için Windows Uygulama SDK'sı dağıtım kılavuzu`
  • Çalışma Zamanı Mimarisi