Kompilierte Bibliotheken zu einem NuGet-Paket hinzufügen

· 1 Min. Lesezeit

Erst neulich habe ich einen Fehler bezüglich eines NullReferenceException in einer fehlenden Bibliothek gefunden, der dort hätte sein sollen, da er aus einem Nuget-Paket stammt, das wir hochgeladen haben.

Im Grunde habe ich eine Bibliotheksklasse kompiliert, die auf einige Projekte verweist. In der Build-Phase wurden die dll-Dateien zum Ordner bin hinzugefügt, aber wenn packaging als Nuget-Paket erstellt und in einer anderen Lösung installiert wird, sind die dll-Dateien, auf die ich verwiesen habe und die in den bin-Ordner kopiert werden sollten, nicht vorhanden.

Wie man es löst

Die Lösung dieses Problems ist ziemlich einfach: Sie müssen die Datei nuspec aktualisieren und für jede der Bibliotheken, die Sie kopieren möchten, die Datei file im Teil files hinzufügen.

<?xml version="1.0" encoding="utf-8"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <license type="expression">MIT</license>
    <projectUrl>$projectUrl$</projectUrl>
    <iconUrl>$projectIconUrl$</iconUrl>
    <description>$description$</description>
    <releaseNotes></releaseNotes>
    <copyright>$copyright$</copyright>
    <tags></tags>
  </metadata>
  <files>
        <file src="bin\Release\MyFile1.dll" target="lib\net47" />
        <file src="bin\Release\MyFile2.dll" target="lib\net47" />
        <file src="bin\Release\MyFile3.dll" target="lib\net47" />
        <file src="bin\Release\MyFile4.dll" target="lib\net47" />
   </files>
</package>