Aracılığıyla paylaş


Sürüm uyarlamalı uygulamalar: Önceki sürümlerle uyumluluğu korurken yeni API'ler kullanın

Windows 10 SDK'sının her sürümü, yararlanmak isteyeceğiniz heyecan verici yeni işlevler ekler. Ancak, tüm müşterileriniz cihazlarını aynı anda en son Windows 10 sürümüne güncelleştirmez ve uygulamanızın mümkün olan en geniş cihaz aralığında çalıştığından emin olmak istersiniz. Burada, uygulamanızın Windows 10 önceki sürümlerinde çalışacak şekilde nasıl tasarlandığını gösteririz, ancak uygulamanız en son güncelleştirmenin yüklü olduğu bir cihazda çalıştığında yeni özelliklerden de yararlanır.

Uygulamanızın en geniş Windows 10 cihaz yelpazesini desteklediğinden emin olmak için atılması gereken 3 adım vardır.

  • İlk olarak, en son API'leri hedeflemek için Visual Studio projenizi yapılandırın. Bu, uygulamanızı derlediğinizde ne olacağını etkiler.
  • İkinci olarak, yalnızca uygulamanızın üzerinde çalıştığı cihazda bulunan API'leri çağırdığınızdan emin olmak için çalışma zamanı denetimleri gerçekleştirin.
  • Üçüncüsü, uygulamanızı En Düşük Sürüm'de ve Windows 10 Hedef Sürümünde test edin.

Visual Studio projenizi yapılandırma

Birden çok Windows 10 sürümünü desteklemenin ilk adımı, Visual Studio projenizde desteklenen Target ve Minimum desteklenen işletim sistemi/SDK sürümlerini belirtmektir.

  • Target: Visual Studio SDK sürümü, uygulama kodunuzu derler ve tüm araçları çalıştırır. Bu SDK sürümündeki tüm API'ler ve kaynaklar derleme zamanında uygulama kodunuzda kullanılabilir.
  • Minimum: Uygulamanızın üzerinde çalıştırabileceği (ve mağaza tarafından dağıtılacak) en eski işletim sistemi sürümünü destekleyen SDK sürümü ve Visual Studio uygulama işaretleme kodunuzu derleyen sürüm.

Çalışma zamanı sırasında uygulamanız dağıtılan işletim sistemi sürümüne göre çalıştırılır, bu nedenle kaynakları kullanırsanız veya bu sürümde bulunmayan API'leri çağırırsanız uygulamanız özel durumlar oluşturur. Bu makalenin devamında doğru API'leri çağırmak için çalışma zamanı denetimlerinin nasıl kullanılacağını göstereceğiz.

Hedef ve En Düşük ayarları, işletim sistemi/SDK sürümleri aralığının uçlarını belirtir. Ancak uygulamanızı en düşük sürümde test ederseniz, En Düşük ve Hedef arasındaki tüm sürümlerde çalıştırılacağından emin olabilirsiniz.

İpucu

Visual Studio API uyumluluğu konusunda sizi uyarmaz. Uygulamanızın Minimum ve Hedef dahil olmak üzere tüm işletim sistemi sürümlerinde beklendiği gibi çalıştığından emin olmak sizin sorumluluğunuzdadır.

Visual Studio 2015, Güncelleştirme 2 veya sonraki sürümlerinde yeni bir proje oluşturduğunuzda, uygulamanızın desteklediği Hedef ve En Düşük sürümlerini ayarlamanız istenir. Varsayılan olarak, Hedef Sürüm en yüksek yüklü SDK sürümüdür ve En Düşük Sürüm en düşük yüklü SDK sürümüdür. Yalnızca makinenize yüklenen SDK sürümlerinden Hedef ve En Düşük'ü seçebilirsiniz.

Hedef SDK'yi Visual Studio

Genellikle varsayılan değerleri bırakmanızı öneririz. Ancak, SDK'nın Önizleme sürümü yüklüyse ve üretim kodu yazıyorsanız, Hedef Sürümü Önizleme SDK'sından en son resmi SDK sürümüne değiştirmeniz gerekir.

Visual Studio önceden oluşturulmuş bir projenin En Düşük ve Hedef sürümünü değiştirmek için Project -> Properties -> Uygulama sekmesi -> Hedefleme'ye gidin.

Visual Studio'da hedef SDK'yı değiştirin

Referans için, aşağıdaki tabloda her bir SDK'nın derleme numaraları gösterilmektedir.

Dostça isim Sürüm İşletim sistemi/SDK derlemesi
RTM 1507 10240
Kasım Güncelleştirmesi 1511 10586
Yıldönümü Güncelleştirmesi 1607 14393
Oluşturucular Güncellemesi 1703 15063
Fall Creators Update 1709 16299
Nisan 2018 Güncelleştirmesi 1803 17134
Ekim 2018 Güncelleştirmesi 1809 17763
Mayıs 2019 Güncelleştirmesi 1903 18362

Yayımlanan herhangi bir SDK sürümünü Windows SDK ve öykünücü arşivinden indirebilirsiniz. Windows Insider sitesinin geliştirici bölümünden en son Windows Insider Preview SDK'sını indirebilirsiniz.

Windows 10 güncelleştirmeleri hakkında daha fazla bilgi için bkz. Windows 10 sürüm bilgileri. Windows 10 destek yaşam döngüsü hakkında önemli bilgiler için Windows yaşam döngüsü bilgi sayfasına bakın.

API denetimleri gerçekleştirme

Sürüm uyarlamalı uygulamaların anahtarı API sözleşmeleri ile ApiInformation sınıfının birleşimidir. Bu sınıf, çeşitli cihazlarda ve işletim sistemi sürümlerinde API çağrılarını güvenli bir şekilde yapabilmeniz için belirtilen BIR API sözleşmesinin, türünün veya üyesinin mevcut olup olmadığını algılamanıza olanak tanır.

API sözleşmeleri

Bir cihaz ailesi içindeki API kümesi, API sözleşmeleri olarak bilinen alt bölümlere ayrılır. ApiInformation.IsApiContractPresent yöntemini kullanarak BIR API sözleşmesi olup olmadığını test edebilirsiniz. Bir API sözleşmesinin aynı sürümünde bulunan birçok API'nin varlığını test etmek istiyorsanız bu yararlı olur.

    bool isScannerDeviceContract_1_Present =
        Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent
            ("Windows.Devices.Scanners.ScannerDeviceContract", 1);

API sözleşmesi nedir? Temel olarak, API sözleşmesi bir özelliği temsil eder: belirli işlevleri birlikte sunan ilgili API'lerden oluşan bir kümedir. Varsayımsal bir API sözleşmesi, iki sınıf, beş arabirim, bir yapı, iki sabit listesi vb. içeren bir API kümesini temsil edebilir.

Mantıksal olarak ilişkili türler bir API sözleşmesi içinde gruplandırılır ve Windows 10 başlayarak her Windows Runtime API bir API sözleşmesinin üyesidir. API Sözleşmeleri ile cihazdaki belirli bir özelliğin veya API'nin kullanılabilirliğini denetler, belirli bir cihazı veya işletim sistemini denetlemek yerine cihazın özelliklerini etkili bir şekilde denetlersiniz. Bir API sözleşmesindeki herhangi bir API'yi uygulayan bir platform, söz konusu API sözleşmesindeki her API'yi uygulamak için gereklidir. Başka bir deyişle, çalışan işletim sisteminin belirli bir API sözleşmesini destekleyip desteklemediğini test edebilir ve destekliyorsa her birini ayrı ayrı denetlemeden bu API sözleşmesindeki API'lerden herhangi birini çağırabilirsiniz.

En büyük ve en yaygın kullanılan API sözleşmesi, Windows sözleşmesidir. Foundation.UniversalApiContract. Universal Windows Platform API'lerin çoğunu içerir. Cihaz ailesi uzantısı SDK'ları ve API sözleşmeleri belgelerinde kullanılabilir API sözleşmelerinin çeşitliliği açıklanmaktadır. Bunların çoğunun işlevsel olarak ilişkili api'ler kümesini temsil ettiğini göreceksiniz.

Uyarı

Henüz belgelenmemiş bir önizleme Windows Yazılım Geliştirme Seti (SDK) yüklüyse, API sözleşmesi desteğiyle ilgili bilgileri '(Program Files (x86))\Windows Kits\10\Platforms<platform><SDK version>\Platform.xml' konumundaki SDK yükleme klasöründe bulunan 'Platform.xml' dosyasında da bulabilirsiniz.

Sürüm uyarlamalı kod ve koşullu XAML

Windows 10'nin tüm sürümlerinde, çağırmak istediğiniz API'nin varlığını test etmek için apiInformation sınıfını kodunuzdaki bir koşulda kullanabilirsiniz. Uyarlamalı kodunuzda, ihtiyacınız olan ayrıntı düzeyinde API'leri test etmek için sınıfının IsTypePresent, IsEventPresent, IsMethodPresent ve IsPropertyPresent gibi çeşitli yöntemlerini kullanabilirsiniz.

Daha fazla bilgi ve örnek için bkz . Sürüm uyarlamalı kodu.

Uygulamalarınızın Minimum Sürümü derleme 15063 (Creators Update) veya sonrası ise, koşullu XAML kullanarak XAML içinde özellikleri ayarlayabilir ve arka plan kodu kullanmaya gerek kalmadan nesnelerin örneğini oluşturabilirsiniz. Koşullu XAML, işaretlemede ApiInformation.IsApiContractPresent yöntemini kullanmak için bir yol sağlar.

Daha fazla bilgi ve örnek için bkz . Koşullu XAML.

Gecikmeli yüklenen API'ler

QueryOptionalDelayLoadedAPI işlevi, Store uygulamalarının (ilke tarafından LoadLibrary'yi çağırmasına izin verilmez) gecikmeli yüklenen işlevlerinin gerçekten bulunup bulunmadığını algılamasını sağlar.

#include <windows.h>
#include <commdlg.h>
#include <libloaderapi2.h>
#include <stdio.h>

EXTERN_C IMAGE_DOS_HEADER __ImageBase;
#define HMODULE_THISCOMPONENT reinterpret_cast<HMODULE>(&__ImageBase)

int __cdecl main(int argc, char** argv)
{
    if (QueryOptionalDelayLoadedAPI(HMODULE_THISCOMPONENT,
          "comdlg32.dll", "GetOpenFileNameW", 0))
    {
        printf("GetOpenFileNameW can be called!\n");
    }
    return 0;
}

Sürüm uyarlamalı uygulamanızı test edin

Sürüm uyarlamalı bir uygulama yazmak için sürüm uyarlamalı kodu veya koşullu XAML'yi kullandığınızda, bunu En Düşük Sürüm çalıştıran bir cihazda ve Windows 10 Hedef Sürümünü çalıştıran bir cihazda test etmeniz gerekir.

Tüm koşullu kod yollarını tek bir cihazda test edemezsiniz. Tüm kod yollarının test edilmesini sağlamak için uygulamanızı desteklenen en düşük işletim sistemi sürümünü çalıştıran bir uzak cihazda (veya sanal makinede) dağıtmanız ve test etmeniz gerekir. Uzaktan hata ayıklama hakkında daha fazla bilgi için bkz. UWP uygulamalarını dağıtma ve hata ayıklama.