2016-01-05 2 views
11

Wie verpacke ich eine universelle Windows-Plattform-Bibliothek auf eine moderne Allzweck-Weise für die Veröffentlichung über NuGet? Nehmen wir an, ich habe eine einzelne AnyCPU Assembly in C# geschrieben, die einige Code- und XAML-Benutzersteuerelemente exportiert.Wie packt man eine .NET-Bibliothek, die auf die universelle Windows-Plattform abzielt?

Dies ist eine Reihe von Fragen und Antworten, die meine Erkenntnisse über das Thema der modernen NuGet Paket Authoring dokumentieren, wobei der Schwerpunkt vor allem auf die eingeführten Änderungen mit NuGet 3. Sie könnten auch interessiert sein in einigen verwandten Fragen:

Antwort

11

Diese Antwort baut auf dem principles used to package libraries targeting the .NET Framework. Lesen Sie zuerst die verknüpfte Antwort, um das Folgende besser zu verstehen.

Zuerst müssen Sie das Kontrollkästchen "Bibliothekslayout erstellen" in den Projekteinstellungen aktivieren. Ohne dies ist es nicht möglich, die von Ihrer Bibliothek exportierten XAML-Benutzersteuerelemente zu verwenden. Stellen Sie sicher, dass diese Einstellung für alle Buildkonfigurationen und -architekturen gilt.

Zusätzlich zu den grundlegenden 3-Assets (siehe Antwort oben verlinkten), werden Sie auch folgende zusätzliche Vermögenswerte von Buildausgabeverzeichnis verpacken müssen:

  • MyUwpLibrary.pri
  • MyUwpLibrary Unterverzeichnis

Diese zusätzlichen Ressourcen sind erforderlich, um XAML-Benutzersteuerelemente zu verwenden, die von Ihrer Assembly exportiert wurden. Fügen Sie diese Assets immer hinzu, auch wenn Sie noch kein XAML aus Ihrer Bibliothek exportieren - Sie könnten es eines Tages tun, und das wird später schwierig zu merken sein!

die UWP Bibliothek veröffentlichen, müssen Sie ein NuGet Paket mit folgenden Struktur erzeugen:

\---lib 
    \---uap10.0 
     | MyUwpLibrary.dll 
     | MyUwpLibrary.pdb 
     | MyUwpLibrary.pri 
     | MyUwpLibrary.xml 
     | 
     \---MyUwpLibrary 
       HelloWorld.xaml 
       MyUwpLibrary.xr.xml 

Wenn Sie mit .NET Framework Bibliothek Publishing vertraut sind, diese sehr vertraut und einfach aussehen sollten. Sie können die folgende Vorlage für Ihre Nuspec-Datei verwenden:

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata minClientVersion="3.2"> 
     <id>Example.MyUwpLibrary</id> 
     <version>1.0.0</version> 
     <authors>Firstname Lastname</authors> 
     <description>Example of a UWP library that exports a user control.</description> 
     <dependencies> 
      <dependency id="Newtonsoft.Json" version="8.0.1" /> 
     </dependencies> 
    </metadata> 
    <files> 
     <!-- The double wildcard will also grab all the resource files and the resource subdirectory. --> 
     <file src="..\bin\Release\MyUwpLibrary**" target="lib\uap10.0" /> 
    </files> 
</package> 

Das ist es wirklich! Denken Sie daran, Ihre Lösung mithilfe der Release-Konfiguration zu erstellen, bevor Sie das NuGet-Paket erstellen. Weitere Informationen finden Sie in der Antwort zum Verpacken einer .NET Framework-Bibliothek, die oben verlinkt ist.

Eine Beispielbibliothek und die relevanten Verpackungsdateien sind available on GitHub. Die Lösung, die dieser Antwort entspricht, ist SimpleUwpLibrary.

+0

Vielen Dank für das! Ich hatte Probleme, meine eigene UWP-Bibliothek zu erstellen, und ich denke, das hat die Probleme für mich gelöst. –

+0

Auch: ein anderes TFM, das verwendet werden könnte (anstelle von "uap10.0"), ist "netcore50". –

+0

Das MyUwpLibrary-Unterverzeichnis wird nur erstellt, wenn das Flag "GenerateLibraryLayout" für die entsprechende Erstellungskonfiguration auf "True" gesetzt ist. – halllo

Verwandte Themen