UWP paketleri oluşturma

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

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

Önkoşullar

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

  2. CLI'NuGet. nuget.org/downloads'den en son sürümünü nuget.exe indirin ve istediğiniz konuma kaydedin (indirme doğrudan)..exe Ardından, henüz değilse path ortam değişkeninize bu konumu ekleyin.

UWP Windows Çalışma Zamanı bileşeni oluşturma

  1. Visual Studio'da Yeni > Dosya > Project'ı seçin, Visual C++ > Windows > Evrensel düğümünü genişletin, Windows Çalışma Zamanı Bileşeni (Evrensel Windows) şablonunu seçin, adı ImageEnhancer olarak değiştirin ve Tamam'a tıklayın. İstendiğinde Hedef Sürüm ve En Düşük Sürüm için varsayılan değerleri kabul edin.

    Creating a new UWP Windows Runtime Component project

  2. Çözüm Gezgini'de projeye sağ tıklayın, Yeni Öğe Ekle'yi >seçin, Visual C++ > XAML düğümüne tıklayın, Şablonlu Denetim'i seçin, adı AwesomeImageControl.cpp olarak değiştirin ve Ekle'ye tıklayın:

    Adding a new XAML Templated Control item to the project

  3. Çözüm Gezgini'da projeye sağ tıklayın ve Özellikler'i seçin. Özellikler sayfasında Yapılandırma Özellikleri > C/C++ öğesini genişletin ve Çıkış Dosyaları'na tıklayın. Sağdaki bölmede XML Belge Dosyaları Oluştur değerini Evet olarak değiştirin:

    Setting Generate XML Documentation Files to Yes

  4. Şimdi çözüme sağ tıklayın, Toplu Derleme'yi seçin, aşağıda gösterildiği gibi iletişim kutusundaki üç Hata Ayıklama kutusunu işaretleyin. Bu, bir derleme yaptığınızda, Windows desteklenen hedef sistemlerin her biri için tam bir yapıt kümesi oluşturmanızı sağlar.

    Batch Build

  5. Batch Derleme iletişim kutusunda Oluştur'a tıklayarak projeyi doğrulayın ve NuGet paketi için ihtiyacınız olan çıkış dosyalarını oluşturun.

Not

Bu kılavuzda paket için Hata ayıklama yapıtlarını kullanacaksınız. Hata ayıklama olmayan paket için, bunun yerine Batch Derleme iletişim kutusundaki Sürüm seçeneklerini işaretleyin ve sonraki adımlarda elde edilen Yayın klasörlerine bakın.

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

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

  1. Bir komut istemi açın ve öğesini içeren ImageEnhancer.vcxproj klasöre gidin (bu, çözüm dosyasının bulunduğu alt klasör olacaktır).

  2. oluşturmak ImageEnhancer.nuspec için NuGet spec komutunu çalıştırın (dosyanın adı dosyanın adından .vcxproj alınır):

    nuget spec
    
  3. Düzenleyicide açın ImageEnhancer.nuspec ve YOUR_NAME uygun bir değerle değiştirerek aşağıdakiyle eşleşecek şekilde güncelleştirin. Ö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 2016</copyright>
        <tags>image enhancer imageenhancer</tags>
        </metadata>
    </package>
    

Not

Genel kullanım 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 Çalışma Zamanı 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 derlerken oluşturulan ve NuGet paketinize eklenmesi gereken bir .winmd dosyasında yer alır. IntelliSense verilerine sahip bir XML dosyası da aynı anda oluşturulur ve bu dosyanın da eklenmesi gerekir.

Dosyaya aşağıdaki <files> düğümü .nuspec ekleyin:

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

    <files>
        <!-- WinMd and IntelliSense files -->
        <file src="..\Debug\ImageEnhancer\ImageEnhancer.winmd" target="lib\uap10.0"/>
        <file src="..\Debug\ImageEnhancer\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 şablonu içeren 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.dll derlemelerde (ARM, x86 ve x64) bulunan yerel kodda yer alır. Bunları pakete eklemek için ilgili .pri kaynak dosyalarıyla birlikte bölümünde bunlara <files> başvurun:

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

        <!-- DLLs and resources -->
        <file src="..\ARM\Debug\ImageEnhancer\ImageEnhancer.dll" target="runtimes\win10-arm\native"/>
        <file src="..\ARM\Debug\ImageEnhancer\ImageEnhancer.pri" target="runtimes\win10-arm\native"/>

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

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

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

    </files>
</package>

.targets ekleme

Daha sonra, NuGet paketinizi tüketebilecek C++ ve JavaScript projelerinde gerekli derlemeyi ve winmd dosyalarını tanımlamak için bir .targets dosyası gerekir. (C# ve Visual Basic projeleri bunu otomatik olarak yapar.) Aşağıdaki ImageEnhancer.targets metni içine kopyalayıp dosyayla aynı klasöre .nuspec kaydederek bu dosyayı oluşturun. Not: Bu .targets dosyanın paket kimliğiyle aynı adla (örneğin <Id> , dosyadaki .nupspec öğe) olması gerekir:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ImageEnhancer-Platform Condition="'$(Platform)' == 'Win32'">x86</ImageEnhancer-Platform>
        <ImageEnhancer-Platform Condition="'$(Platform)' != 'Win32'">$(Platform)</ImageEnhancer-Platform>
    </PropertyGroup>
    <ItemGroup Condition="'$(TargetPlatformIdentifier)' == 'UAP'">
        <Reference Include="$(MSBuildThisFileDirectory)..\..\lib\uap10.0\ImageEnhancer.winmd">
            <Implementation>ImageEnhancer.dll</Implementation>
        </Reference>
    <ReferenceCopyLocalPaths Include="$(MSBuildThisFileDirectory)..\..\runtimes\win10-$(ImageEnhancer-Platform)\native\ImageEnhancer.dll" />
    </ItemGroup>
</Project>

Ardından dosyanızda .nuspec şu ifadeye ImageEnhancer.targets bakın:

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

        <!-- .targets -->
        <file src="ImageEnhancer.targets" target="build\native"/>

    </files>
</package>

Son .nuspec

Son .nuspec dosyanız artık aşağıdaki gibi görünmelidir ve burada da 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 2016</copyright>
    <tags>image enhancer imageenhancer</tags>
    </metadata>
    <files>
    <!-- WinMd and IntelliSense -->
    <file src="..\Debug\ImageEnhancer\ImageEnhancer.winmd" target="lib\uap10.0"/>
    <file src="..\Debug\ImageEnhancer\ImageEnhancer.xml" target="lib\uap10.0"/>

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

    <!-- DLLs and resources -->
    <file src="..\ARM\Debug\ImageEnhancer\ImageEnhancer.dll" target="runtimes\win10-arm\native"/>
    <file src="..\ARM\Debug\ImageEnhancer\ImageEnhancer.pri" target="runtimes\win10-arm\native"/>
    <file src="..\ARM64\Debug\ImageEnhancer\ImageEnhancer.dll" target="runtimes\win10-arm64\native"/>
    <file src="..\ARM64\Debug\ImageEnhancer\ImageEnhancer.pri" target="runtimes\win10-arm64\native"/>     
    <file src="..\x64\Debug\ImageEnhancer\ImageEnhancer.dll" target="runtimes\win10-x64\native"/>
    <file src="..\x64\Debug\ImageEnhancer\ImageEnhancer.pri" target="runtimes\win10-x64\native"/>
    <file src="..\Debug\ImageEnhancer\ImageEnhancer.dll" target="runtimes\win10-x86\native"/>
    <file src="..\Debug\ImageEnhancer\ImageEnhancer.pri" target="runtimes\win10-x86\native"/>

    <!-- .targets -->
    <file src="ImageEnhancer.targets" target="build\native"/>

    </files>
</package>

Bileşeni paketleme

Tamamlandıktan .nuspec sonra pakete eklemeniz gereken tüm dosyalara başvurmak için komutunu çalıştırmaya pack 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çeriği görürsünüz:

NuGet Package Explorer showing the ImageEnhancer package

İpucu

Dosya .nupkg yalnızca farklı bir uzantıya sahip bir ZIP dosyasıdır. Ayrıca paket içeriğini inceleyebilir ve ardından olarak değiştirebilirsiniz .nupkg.zip, 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.