Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il Universal Windows Platform (UWP) fornisce una piattaforma di app comune per ogni dispositivo che esegue Windows 10. All'interno di questo modello, le app UWP possono chiamare entrambe le API WinRT comuni a tutti i dispositivi e anche le API (inclusi Win32 e .NET) specifiche della famiglia di dispositivi in cui è in esecuzione l'app.
In questa procedura dettagliata si crea un pacchetto NuGet con un componente UWP C# (incluso un controllo XAML) che può essere usato in progetti gestiti e nativi.
Prerequisiti
Visual Studio 2019. Installare gratuitamente l'edizione Community 2019 da visualstudio.com. È anche possibile usare le edizioni Professional ed Enterprise.
CLI di NuGet Scaricare la versione più recente di
nuget.exeda nuget.org/downloads e salvare lo strumento in una posizione di propria scelta. Il file scaricato è direttamente.exe. Aggiungete il percorso del file dello strumento alla variabile di ambiente PATH, se non lo è già. Per altre informazioni, vedere Installazione di nuget.exe.
Creare un componente Windows Runtime UWP
In Visual Studio selezionare File > Nuovo > Project e cercare "uwp c#". Selezionare il modello Windows Runtime Component (Universal Windows) e selezionare Next. Modificare il nome in ImageEnhancer e selezionare Crea. Accettare i valori predefiniti per Versione di destinazione e Versione minima quando richiesto.
Fare clic con il pulsante destro del mouse sul progetto in Solution Explorer, selezionare Aggiungi > Nuovo elemento, selezionare Controllo con modello, modificare il nome in AwesomeImageControl.cs e selezionare Aggiungi:
Fare clic con il pulsante destro del mouse sul progetto in Solution Explorer e selezionare Properties. Nella pagina Proprietà scegliere Build scheda e abilitare XML Documentation File:
Fare clic con il pulsante destro del mouse sulla soluzione e scegliere Compilazione batch. Selezionare le cinque caselle di compilazione, come illustrato nell'immagine seguente. In questo modo, quando si esegue una compilazione, si genera un set completo di artefatti per ogni sistema di destinazione supportato Windows.
Nella finestra di dialogo Compilazione batch selezionare Compila per verificare il progetto e creare i file di output necessari per il pacchetto NuGet.
Annotazioni
In questa procedura dettagliata si usano gli artefatti di Debug per il pacchetto. Per il pacchetto non di debug, controllare invece le opzioni di Release nella finestra di dialogo Compilazione batch e fare riferimento alle cartelle Release risultanti nei passaggi successivi.
Creare e aggiornare il file .nuspec
Per creare il file iniziale .nuspec , completare i passaggi seguenti. Le sezioni successive illustrano gli altri aggiornamenti necessari.
Aprire un prompt dei comandi e passare alla cartella che contiene il
ImageEnhancer.csprojfile, che deve essere una sottocartella della cartella che contiene il file della soluzione.Eseguire il
NuGet speccomando per generare ilImageEnhancer.nuspecfile. Il nome del file viene ricavato dal nome del.csrojfile.nuget specAprire
ImageEnhancer.nuspecin un editor e aggiornarlo in modo che corrisponda al seguente, sostituendo YOUR_NAME con un valore appropriato. Non lasciare alcun valore $propertyName$. Il<id>valore, in particolare, deve essere univoco in nuget.org (vedere le convenzioni di denominazione descritte in Creazione di un pacchetto). Si noti anche che è necessario aggiornare anche i tag autore e descrizione oppure si riceve un errore durante il passaggio di compressione.<?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>
Annotazioni
Per i pacchetti creati per l'utilizzo pubblico, prestare particolare attenzione all'elemento <tags> , in quanto questi tag aiutano altri a trovare il pacchetto e a capire cosa fa.
Aggiunta di metadati Windows al pacchetto
Un componente Windows Runtime richiede metadati che descrivono tutti i tipi disponibili pubblicamente, che consente ad altre app e librerie di utilizzare il componente. Questi metadati sono contenuti in un file con estensione winmd, che viene creato durante la compilazione del progetto e devono essere inclusi nel pacchetto NuGet. Anche un file XML con dati IntelliSense viene compilato contemporaneamente e deve essere incluso anche.
Aggiungere il nodo seguente <files> al .nuspec file:
<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>
Aggiunta di contenuto XAML
Per includere un controllo XAML con il componente, devi aggiungere il file XAML con il modello predefinito per il controllo (come generato dal modello di progetto). Questo vale anche nella <files> sezione :
<?xml version="1.0"?>
<package >
<metadata>
...
</metadata>
<files>
...
<!-- XAML controls -->
<file src="Themes\Generic.xaml" target="lib\uap10.0\Themes"/>
</files>
</package>
Aggiunta delle librerie di implementazione nativa
All'interno del componente, la logica di base del tipo ImageEnhancer è nel codice nativo, che è contenuto nei vari ImageEnhancer.winmd assembly generati per ogni runtime di destinazione (ARM, ARM64, x86 e x64). Per includerli nel pacchetto, fare riferimento alla sezione <files> insieme ai file di risorse .pri associati:
<?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>
Versione finale .nuspec
Il file finale .nuspec dovrebbe ora essere simile al seguente, dove YOUR_NAME deve essere sostituito con un valore appropriato:
<?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>
Impacchettare il componente
Dopo aver completato .nuspec il riferimento a tutti i file che è necessario includere nel pacchetto, è possibile eseguire il nuget pack comando:
nuget pack ImageEnhancer.nuspec
In questo modo viene generato ImageEnhancer.YOUR_NAME.1.0.0.nupkg. Aprendo questo file in uno strumento come Esplora pacchetti NuGet ed espandendo tutti i nodi, vengono visualizzati i contenuti seguenti:
Suggerimento
Un .nupkg file è solo un file ZIP con un'estensione diversa. È anche possibile esaminare il contenuto del pacchetto, quindi, passando .nupkg a .zip, ma ricordarsi di ripristinare l'estensione prima di caricare un pacchetto in nuget.org.
Per rendere disponibile il pacchetto ad altri sviluppatori, seguire le istruzioni riportate in Pubblicare un pacchetto.