Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Universal Windows Platform (UWP) poskytuje společnou aplikační platformu pro každé zařízení, na kterém běží Windows 10. V rámci tohoto modelu můžou aplikace UPW volat rozhraní API WinRT, která jsou společná pro všechna zařízení, a také rozhraní API (včetně Win32 a .NET), která jsou specifická pro řadu zařízení, na které je aplikace spuštěná.
V tomto názorném postupu vytvoříte balíček NuGet s nativní komponentou UPW (včetně ovládacího prvku XAML), který lze použít v spravovaných i nativních projektech.
Předpoklady
Visual Studio 2017 nebo Visual Studio 2015. Nainstalujte si edici Community z roku 2017 zdarma z visualstudio.com; Můžete také používat edice Professional a Enterprise.
Rozhraní příkazového řádku pro NuGet Stáhněte si nejnovější verzi
nuget.exez nuget.org/downloads a uložte ji do libovolného umístění (stažení je.exepřímo). Pak toto umístění přidejte do proměnné prostředí PATH, pokud ještě není.
Vytvoření komponenty UWP Windows Runtime
V Visual Studio, vyberte Soubor > Nový > Projekt, rozbalte uzel Visual C++ > Windows > Universal, vyberte šablonu Windows Runtime Component (Universal Windows), změňte název na ImageEnhancer a klikněte na OK. Po zobrazení výzvy přijměte výchozí hodnoty pro cílovou verzi a minimální verzi.
Klikněte pravým tlačítkem na projekt v Solution Explorer, vyberte Přidat > Nová položka, klikněte na uzel Visual C++ > XAML, vyberte Templated Control, změňte název na AwesomeImageControl.cpp a klikněte na Přidat:
Klikněte pravým tlačítkem myši na projekt v Solution Explorer a vyberte Properties. Na stránce Vlastnosti rozbalte Vlastnosti konfigurace > C/C++ a klikněte na Output Files. V podokně vpravo změňte hodnotu Generovat soubory dokumentace XML na Ano:
Klikněte pravým tlačítkem myši na řešení , vyberte Batch Build, zaškrtněte tři pole Ladění v dialogovém okně, jak je znázorněno níže. To zajistí, že při sestavování vygenerujete úplnou sadu artefaktů pro každý cílový systém, který Windows podporuje.
V dialogovém okně Dávkové sestavení a kliknutím na Sestavit ověřte projekt a vytvořte výstupní soubory, které potřebujete pro balíček NuGet.
Poznámka:
V tomto průvodci použijete ladící artefakty pro balíček. V případě balíčku, který není laděný, zkontrolujte možnosti vydané verze v dialogovém okně Batch Build a v následujících krocích si projděte výsledné složky vydané verze.
Vytvoření a aktualizace souboru .nuspec
Pokud chcete vytvořit počáteční .nuspec soubor, proveďte následující tři kroky. Oddíly, které následují, vás pak provedou dalšími nezbytnými aktualizacemi.
Otevřete příkazový řádek a přejděte do složky obsahující
ImageEnhancer.vcxproj(bude to podsložka ve složce, kde se nachází soubor řešení).Spuštěním příkazu NuGet
specvygenerujteImageEnhancer.nuspec(název souboru se přebírá z názvu.vcxprojsouboru):nuget specOtevřete
ImageEnhancer.nuspecv editoru a aktualizujte jej tak, aby odpovídal následujícímu textu, přičemž YOUR_NAME nahraďte příslušnou hodnotou. Hodnota<id>, konkrétně, musí být jedinečná napříč nuget.org (viz zásady vytváření názvů popsané v části Vytvoření balíčku). Všimněte si také, že musíte také aktualizovat značky autora a popisu nebo se během kroku balení zobrazí chyba.<?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>
Poznámka:
U balíčků vytvořených pro veřejnou spotřebu věnujte zvláštní pozornost <tags> prvku, protože tyto značky pomáhají ostatním najít váš balíček a pochopit, co dělá.
Přidání metadat Windows do balíčku
Komponenta Windows Runtime vyžaduje metadata, která popisují všechny její veřejně dostupné typy, což umožňuje, aby komponentu mohli využívat i ostatní aplikace a knihovny. Tato metadata jsou obsažena v souboru .winmd, který se vytvoří při kompilaci projektu a musí být součástí balíčku NuGet. Soubor XML s daty IntelliSense je také vytvořen současně a měl by být také zahrnut.
Do souboru <files> přidejte následující uzel .nuspec:
<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>
Přidání obsahu XAML
Pokud chcete do komponenty zahrnout ovládací prvek XAML, musíte přidat soubor XAML s výchozí šablonou ovládacího prvku (vygenerovaný šablonou projektu). Toto také patří do sekce <files>.
<?xml version="1.0"?>
<package >
<metadata>
...
</metadata>
<files>
...
<!-- XAML controls -->
<file src="Themes\Generic.xaml" target="lib\uap10.0\Themes"/>
</files>
</package>
Přidání nativních implementačních knihoven
V rámci vaší komponenty je základní logika typu ImageEnhancer v nativním kódu, která je obsažena v různých ImageEnhancer.dll sestaveních generovaných pro každý cílový modul runtime (ARM, x86 a x64). Pokud je chcete zahrnout do balíčku, odkazujte na ně v <files> části spolu s přidruženými soubory prostředků .pri:
<?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>
Přidání .targets
Dalším krokem je, že projekty v C++ a JavaScriptu, které mohou využívat váš balíček NuGet, potřebují soubor .targets k identifikaci potřebného sestavení a souborů winmd. (Projekty C# a Visual Basic to dělají automaticky.) Vytvořte tento soubor zkopírováním následujícího textu do ImageEnhancer.targets a uložte ho do stejné složky jako soubor .nuspec.
Poznámka: Tento .targets soubor musí mít stejný název jako ID balíčku (např. <Id> prvek v .nupspec souboru):
<?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>
Pak se podívejte do ImageEnhancer.targets souboru .nuspec :
<?xml version="1.0"?>
<package >
<metadata>
...
</metadata>
<files>
...
<!-- .targets -->
<file src="ImageEnhancer.targets" target="build\native"/>
</files>
</package>
Konečný .nuspec
Konečný .nuspec soubor by teď měl vypadat nějak takto, kde by se měl znovu YOUR_NAME nahradit odpovídající hodnotou:
<?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>
Zabalení komponenty
Po dokončení .nuspec odkazování na všechny soubory, které potřebujete zahrnout do balíčku, jste připraveni spustit pack příkaz:
nuget pack ImageEnhancer.nuspec
Tím se vygeneruje ImageEnhancer.YOUR_NAME.1.0.0.nupkg. Otevřete tento soubor v nástroji, jako je Průzkumník balíčků NuGet a rozbalte všechny uzly, zobrazí se následující obsah:
Návod
Soubor .nupkg je jen SOUBOR ZIP s jinou příponou. Obsah balíčku můžete také prozkoumat tak, že přejdete .nupkg na .zip, ale nezapomeňte rozšíření obnovit před nahráním balíčku do nuget.org.
Pokud chcete balíček zpřístupnit ostatním vývojářům, postupujte podle pokynů k publikování balíčku.