UWP paketleri oluşturma (C#)

Universal Windows Platform (UWP) Windows 10 çalıştıran her cihaz için ortak bir uygulama platformu sağlar. Bu modelde UWP uygulamaları hem tüm cihazlar için ortak olan WinRT API'lerini hem de uygulamanın çalıştığı cihaz ailesine özgü API'leri (Win32 ve .NET dahil) çağırabilir.

Bu kılavuzda, hem Yönetilen hem de Yerel projelerde kullanılabilecek bir C# UWP bileşeni (XAML denetimi dahil) ile bir NuGet paketi oluşturacaksınız.

Önkoşullar

  1. Visual Studio 2019. 2019 Community sürümünü visualstudio.com ücretsiz olarak yükleyin. Professional ve Enterprise sürümlerini de kullanabilirsiniz.

  2. NuGet CLI. nuget.exe en son sürümünü indirin ve aracı istediğiniz bir konuma kaydedin. (İndirme doğrudan .exe dosyasıdır.) Araç dosyası konumunu, henüz eklenmediyse PATH ortam değişkeninize ekleyin. Daha fazla bilgi için bkz nuget.exe yükleme.

UWP Windows Runtime bileşeni oluşturma

  1. Visual Studio File > Yeni > Project'yi seçin ve "uwp c#" araması yapın. Windows Runtime Bileşeni (Evrensel Windows) şablonunu seçin ve İleri'i seçin. Adı ImageEnhancer olarak değiştirin ve Oluştur'u seçin. İstendiğinde Hedef Sürüm ve En Düşük Sürüm için varsayılan değerleri kabul edin.

    Yeni bir UWP Windows Runtime Bileşeni projesi oluşturma

  2. Solution Explorer'da projeye sağ tıklayın, Add > Yeni Öğe'i seçin, Templated Control öğesini seçin, adı AwesomeImageControl.cs olarak değiştirin ve Add öğesini seçin:

    Projeye yeni bir XAML Şablonlu Denetim öğesi ekleme

  3. Solution Explorer'da projeye sağ tıklayın ve Properties. Özellikler sayfasında Build sekmesini seçin ve XML Belge Dosyası etkinleştirin:

    XML Belge Dosyaları Oluştur'un Evet olarak ayarlanması

  4. Çözümün üzerine sağ tıklayın ve Toplu Derleme'yi seçin. Aşağıdaki görüntüde gösterildiği gibi beş derleme kutusunu seçin. Bu, bir derleme yaptığınızda, Windows tarafından desteklenen hedef sistemlerin her biri için tam bir yapıt kümesi oluşturmanızı sağlar.

    Batch Derlemesi

  5. Toplu Derleme iletişim kutusunda Derle'yi seçerek projeyi doğrulayın ve NuGet paketi için ihtiyacınız olan çıkış dosyalarını oluşturun.

Uyarı

Bu kılavuzda paket için hata ayıklama bileşenlerini kullanacaksınız. Hata ayıklama olmayan paket için, bunun yerine Toplu Derleme iletişim kutusundaki Yayın (Release) seçeneklerini denetleyin ve ardından gelen adımlarda elde edilen Yayın (Release) klasörlerine bakın.

.nuspec dosyasını oluşturma ve güncelleştirme

İlk .nuspec dosyayı oluşturmak için aşağıdaki adımları tamamlayın. Sonraki bölümler, diğer gerekli güncelleştirmelerde size yol gösterir.

  1. Bir komut istemi açın ve çözüm dosyasını içeren ImageEnhancer.csproj klasörün alt klasörü olması gereken dosyayı içeren klasöre göz atın.

  2. NuGet spec komutunu çalıştırarak ImageEnhancer.nuspec dosyasını oluşturun. Dosyanın adı, .csroj dosyasının adından alınır.

    nuget spec
    
  3. ImageEnhancer.nuspec bir düzenleyicide açın ve aşağıdakilerle eşleşmesi için YOUR_NAME'i uygun bir değerle değiştirerek güncelleyin. $propertyName$ değerlerinin hiçbirini bırakmayın. Özellikle değerin <id> nuget.org genelinde benzersiz olması gerekir ( paket oluşturma bölümünde açıklanan adlandırma kurallarına bakın). Ayrıca yazar ve açıklama etiketlerini de güncelleştirmeniz gerektiğini veya paketleme adımı sırasında bir hatayla karşılaşırsınız.

    <?xml version="1.0"?>
    <package >
        <metadata>
        <id>ImageEnhancer.YOUR_NAME</id>
        <version>1.0.0</version>
        <title>ImageEnhancer</title>
        <authors>YOUR_NAME</authors>
        <owners>YOUR_NAME</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Awesome Image Enhancer</description>
        <releaseNotes>First release</releaseNotes>
        <copyright>Copyright 2020</copyright>
        <tags>image enhancer imageenhancer</tags>
        </metadata>
    </package>
    

Uyarı

Genel tüketim için oluşturulan paketler için, bu etiketler başkalarının paketinizi bulmasına ve ne yaptığını anlamasına yardımcı olduğundan öğeye <tags> özellikle dikkat edin.

Pakete Windows meta verileri ekleme

Windows Runtime Bileşeni, genel kullanıma açık tüm türlerini açıklayan meta veriler gerektirir ve bu da diğer uygulamaların ve kitaplıkların bileşeni kullanmasına olanak tanır. Bu meta veriler, projeyi derlediğinizde oluşturulan ve NuGet paketinize eklenmesi gereken bir .winmd dosyasında bulunur. IntelliSense verilerine sahip bir XML dosyası da aynı anda oluşturulur ve eklenmelidir.

Aşağıdaki <files> düğümünü .nuspec dosyaya ekleyin.

<package>
    <metadata>
        ...
    </metadata>

    <files>
        <!-- WinMd and IntelliSense files -->
      <file src="bin\Debug\ImageEnhancer.winmd" target="lib\uap10.0"/>
      <file src="bin\Debug\ImageEnhancer.xml" target="lib\uap10.0"/>
    </files>
</package>

XAML içeriği ekleme

Bileşeninize bir XAML denetimi eklemek için, denetim için varsayılan şablona sahip XAML dosyasını eklemeniz gerekir (proje şablonu tarafından oluşturulduğu gibi). Bu, şu bölümde de yer almaktadır <files> :

<?xml version="1.0"?>
<package >
    <metadata>
        ...
    </metadata>
    <files>
        ...

        <!-- XAML controls -->
        <file src="Themes\Generic.xaml" target="lib\uap10.0\Themes"/>

    </files>
</package>

Yerel uygulama kitaplıklarını ekleme

Bileşeninizin içinde ImageEnhancer türünün temel mantığı, her hedef çalışma zamanı için oluşturulan çeşitli ImageEnhancer.winmd derlemelerde (ARM, ARM64, x86 ve x64) yer alan yerel kodda yer alır. Bunları pakete eklemek için, ilgili .pri kaynak dosyalarıyla birlikte <files> bölümünde bunlara başvurun:

<?xml version="1.0"?>
<package >
    <metadata>
        ...
    </metadata>
    <files>
        ...

        <!-- WINMDs and resources -->
      <file src="bin\ARM\Debug\ImageEnhancer.winmd" target="runtimes\win10-arm"/>
      <file src="bin\ARM\Debug\ImageEnhancer.pri" target="runtimes\win10-arm"/>

      <file src="bin\ARM64\Debug\ImageEnhancer.winmd" target="runtimes\win10-arm64"/>
      <file src="bin\ARM64\Debug\ImageEnhancer.pri" target="runtimes\win10-arm64"/>

      <file src="bin\x64\Debug\ImageEnhancer.winmd" target="runtimes\win10-x64"/>
      <file src="bin\x64\Debug\ImageEnhancer.pri" target="runtimes\win10-x64"/>

      <file src="bin\x86\Debug\ImageEnhancer.winmd" target="runtimes\win10-x86"/>
      <file src="bin\x86\Debug\ImageEnhancer.pri" target="runtimes\win10-x86"/>

    </files>
</package>

Son .nuspec

Son .nuspec dosyanız artık aşağıdaki gibi görünmelidir; burada yeniden YOUR_NAME uygun bir değerle değiştirilmelidir:

<?xml version="1.0"?>
<package >
    <metadata>
    <id>ImageEnhancer.YOUR_NAME</id>
    <version>1.0.0</version>
    <title>ImageEnhancer</title>
    <authors>YOUR_NAME</authors>
    <owners>YOUR_NAME</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Awesome Image Enhancer</description>
    <releaseNotes>First Release</releaseNotes>
    <copyright>Copyright 2020</copyright>
    <tags>image enhancer imageenhancer</tags>
    </metadata>
    <files>
    <!-- WinMd and IntelliSense -->
      <file src="bin\Debug\ImageEnhancer.winmd" target="lib\uap10.0"/>
      <file src="bin\Debug\ImageEnhancer.xml" target="lib\uap10.0"/>

    <!-- XAML controls -->
    <file src="Themes\Generic.xaml" target="lib\uap10.0\Themes"/>

    <!-- WINMDs and resources -->
      <file src="bin\ARM\Debug\ImageEnhancer.winmd" target="runtimes\win10-arm"/>
      <file src="bin\ARM\Debug\ImageEnhancer.pri" target="runtimes\win10-arm"/>

      <file src="bin\ARM64\Debug\ImageEnhancer.winmd" target="runtimes\win10-arm64"/>
      <file src="bin\ARM64\Debug\ImageEnhancer.pri" target="runtimes\win10-arm64"/>

      <file src="bin\x64\Debug\ImageEnhancer.winmd" target="runtimes\win10-x64"/>
      <file src="bin\x64\Debug\ImageEnhancer.pri" target="runtimes\win10-x64"/>

      <file src="bin\x86\Debug\ImageEnhancer.winmd" target="runtimes\win10-x86"/>
      <file src="bin\x86\Debug\ImageEnhancer.pri" target="runtimes\win10-x86"/>

    </files>
</package>

Bileşeni paketleme

Tüm gerekli dosyaların .nuspec referansları tamamlandığında, nuget pack komutunu çalıştırmaya hazırsınız.

nuget pack ImageEnhancer.nuspec

Bu, ImageEnhancer.YOUR_NAME.1.0.0.nupkgoluşturur. Bu dosyayı NuGet Paket Gezgini gibi bir araçta açıp tüm düğümleri genişleterek aşağıdaki içerikleri görürsünüz:

ImageEnhancer paketini gösteren NuGet Paket Gezgini

Tavsiye

Dosya .nupkg , yalnızca farklı bir uzantıya sahip bir ZIP dosyasıdır. Paket içeriğini de inceleyebilir, ardından .nupkg'yı .zip olarak değiştirebilirsiniz, ancak paketi nuget.org'a yüklemeden önce uzantıyı geri yüklemeyi unutmayın.

Paketinizi diğer geliştiricilerin kullanımına açmak için Paket yayımlama yönergelerini izleyin.