Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Universal Windows Platform (UWP) biedt een algemeen app-platform voor elk apparaat waarop Windows 10 wordt uitgevoerd. Binnen dit model kunnen UWP-apps zowel de WinRT-API's aanroepen die gebruikelijk zijn voor alle apparaten, als API's (inclusief Win32 en .NET) die specifiek zijn voor de apparaatfamilie waarop de app wordt uitgevoerd.
In dit scenario maakt u een NuGet-pakket met een systeemeigen UWP-onderdeel (inclusief een XAML-besturingselement) dat kan worden gebruikt in zowel beheerde als systeemeigen projecten.
Vereiste voorwaarden
Visual Studio 2017 of Visual Studio 2015. Installeer de communityversie 2017 gratis van visualstudio.com; u kunt ook de Professional- en Enterprise-edities gebruiken.
NuGet CLI. Downloaden de nieuwste versie van
nuget.exevanaf nuget.org/downloads en sla het op een locatie naar keuze op (de download is het.exedirect). Voeg die locatie vervolgens toe aan uw PATH-omgevingsvariabele als deze nog niet is.
Een UWP-Windows Runtime-onderdeel maken
In Visual Studio, kies Bestand > Nieuw > project, vouw het knooppunt Visual C++ > Windows > Universeel uit, selecteer het Windows-runtimecomponent (Universele Windows) sjabloon, wijzig de naam in ImageEnhancer en klik op OK. Accepteer de standaardwaarden voor de doelversie en de minimumversie wanneer hierom wordt gevraagd.
Klik met de rechtermuisknop op het project in Solution Explorer, selecteer Toevoegen > Nieuw item, klik op het knooppunt Visual C++ > XAML, selecteer Templated Control, wijzig de naam in AwesomeImageControl.cpp en klik op Toevoegen:
Klik met de rechtermuisknop op het project in Solution Explorer en selecteer Properties. Vouw op de pagina Eigenschappen Configuratie-eigenschappen > C/C++ uit en klik op Output Files. Wijzig in het deelvenster aan de rechterkant de waarde voor XML-documentatiebestanden genereren in Ja:
Klik nu met de rechtermuisknop op de oplossing , selecteer Batch Build, schakel de drie foutopsporingsvakken in het dialoogvenster in, zoals hieronder wordt weergegeven. Dit zorgt ervoor dat wanneer u een build uitvoert, u een volledige set artefacten genereert voor elk van de doelsystemen die Windows ondersteunt.
Klik in het dialoogvenster Batch Build op Build om het project te controleren en de uitvoerbestanden te maken die u nodig hebt voor het NuGet-pakket.
Opmerking
In deze doorloop gebruikt u de artefacten voor foutopsporing voor het pakket. Voor niet-foutopsporingspakket controleert u in plaats daarvan de releaseopties in het dialoogvenster Batch Build en raadpleegt u de resulterende releasemappen in de volgende stappen.
Het .nuspec-bestand maken en bijwerken
Als u het eerste .nuspec bestand wilt maken, voert u de drie onderstaande stappen uit. De volgende secties begeleiden u vervolgens door andere benodigde updates.
Open een opdrachtprompt en navigeer naar de map met
ImageEnhancer.vcxproj(dit is een submap hieronder waar het oplossingsbestand zich bevindt).Voer de NuGet-opdracht
specuit om te genererenImageEnhancer.nuspec(de naam van het bestand wordt opgehaald uit de naam van het.vcxprojbestand):nuget specOpen
ImageEnhancer.nuspeceen editor en werk deze bij zodat deze overeenkomt met het volgende. Vervang YOUR_NAME door een geschikte waarde. De<id>waarde moet uniek zijn in nuget.org (zie de naamconventies die worden beschreven in Een pakket maken). Houd er ook rekening mee dat u ook de auteur- en beschrijvingstags moet bijwerken of dat er een fout optreedt tijdens de verpakkingsstap.<?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>
Opmerking
Voor pakketten die zijn gebouwd voor openbaar gebruik, moet u speciale aandacht besteden aan het <tags> element, omdat deze tags anderen helpen uw pakket te vinden en te begrijpen wat het doet.
Windows metagegevens toevoegen aan het pakket
Een Windows Runtime Component vereist metagegevens die alle openbaar beschikbare typen beschrijven, waardoor andere apps en bibliotheken het onderdeel kunnen gebruiken. Deze metagegevens bevinden zich in een WINMD-bestand dat wordt gemaakt wanneer u het project compileert en moet worden opgenomen in uw NuGet-pakket. Een XML-bestand met IntelliSense-gegevens wordt ook tegelijkertijd gebouwd en moet ook worden opgenomen.
Voeg het volgende <files> knooppunt toe aan het .nuspec bestand:
<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-inhoud toevoegen
Als u een XAML-besturingselement wilt opnemen met uw onderdeel, moet u het XAML-bestand met de standaardsjabloon voor het besturingselement toevoegen (zoals gegenereerd door de projectsjabloon). Dit gaat ook in de <files> sectie:
<?xml version="1.0"?>
<package >
<metadata>
...
</metadata>
<files>
...
<!-- XAML controls -->
<file src="Themes\Generic.xaml" target="lib\uap10.0\Themes"/>
</files>
</package>
De systeemeigen implementatiebibliotheken toevoegen
Binnen uw onderdeel bevindt de kernlogica van het type ImageEnhancer zich in systeemeigen code, die is opgenomen in de verschillende ImageEnhancer.dll assembly's die worden gegenereerd voor elke doelruntime (ARM, x86 en x64). Als u deze wilt opnemen in het pakket, raadpleegt u deze in de <files> sectie samen met de bijbehorende .pri-resourcebestanden:
<?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 toevoegen
Vervolgens hebben C++ en JavaScript-projecten die uw NuGet-pakket kunnen gebruiken, een .targets-bestand nodig om de benodigde assembly- en winmd-bestanden te identificeren. (C# en Visual Basic projecten doen dit automatisch.) Maak dit bestand door de onderstaande tekst naar ImageEnhancer.targets te kopiƫren en op te slaan in dezelfde map als het bestand .nuspec.
Opmerking: dit .targets bestand moet dezelfde naam hebben als de pakket-id (bijvoorbeeld het <Id> element in het .nupspec bestand):
<?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>
Raadpleeg vervolgens ImageEnhancer.targets in uw .nuspec bestand:
<?xml version="1.0"?>
<package >
<metadata>
...
</metadata>
<files>
...
<!-- .targets -->
<file src="ImageEnhancer.targets" target="build\native"/>
</files>
</package>
Definitieve .nuspec
Het uiteindelijke .nuspec bestand moet er nu als volgt uitzien, waarbij opnieuw YOUR_NAME moet worden vervangen door een geschikte waarde:
<?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>
Het onderdeel verpakken
Nu de voltooide .nuspec verwijzing verwijst naar alle bestanden die u in het pakket moet opnemen, bent u klaar om de pack opdracht uit te voeren:
nuget pack ImageEnhancer.nuspec
Dit genereert ImageEnhancer.YOUR_NAME.1.0.0.nupkg. Als u dit bestand opent in een hulpprogramma zoals NuGet Package Explorer en alle knooppunten uitbreidt, ziet u de volgende inhoud:
Aanbeveling
Een .nupkg bestand is slechts een ZIP-bestand met een andere extensie. U kunt ook de inhoud van het pakket onderzoeken door .nupkg te veranderen in .zip, maar vergeet niet om de extensie te herstellen voordat u een pakket uploadt naar nuget.org.
Als u uw pakket beschikbaar wilt maken voor andere ontwikkelaars, volgt u de instructies voor het publiceren van een pakket.