Meine Gedanken sind, NuGet Verpackung ist eine Menge über Konventionen.
Es gibt kein Problem für verschiedenen Plattformen in Verpackungs gleichen Namensräume und dieselben Namen ist (wie in lib/net40/mydll.dll
, lib/net35/mydll.dll
etc im gleichen Paket), als NuGet registrierte Abhängigkeiten von Plattform filtert.
Mehrere Versionen für die gleiche Plattform zu erstellen scheint unkonventionell, ist voreingenommen in Richtung eines Pakets pro Build. Das bedeutet nicht, dass Sie es nicht tun können, aber Sie sollten sich zuerst fragen, ob Sie sollten.
Das heißt, wenn Ihre Debug-und Release-Builds sind sehr unterschiedlich (bedingte Kompilierung usw.) dies könnte jedoch nützlich sein. Aber wie wählen die Endanwender bei der Installation Ihres Pakets Release oder Debug?
Eine Idee könnte sein, eine Version pro Build-Konfiguration. Both can be installed into the project. Fügen Sie dazu entweder targets file to your package hinzu oder erstellen Sie a powershell install script, das bedingte Verweise direkt in der Zielprojektdatei hinzufügt, wenn Sie etwas weniger Grundlegendes wünschen als alles, was MsBuild für Sie tun kann.
Beispiel für die erste Taktik: Erstellen Sie eine .TARGET-Datei (in Ihrem Paket, einen build
Ordner erstellen und dann build\YourLib.targets
erstellen mit folgendem Inhalt):
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
<Reference Include="YourLib">
<HintPath>..\packages\YourLib.1.0.0\lib\Debug\YourLib.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Release'">
<Reference Include="YourLib">
<HintPath>..\packages\YourLib.1.0.0\lib\Release\YourLib.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
Providing Sie Debug erstellt und Release-Ordner (Plattform Ordner ist optional), die Build-Ausgabe wird effektiv je nach Konfiguration ändern - vorausgesetzt, Paket-Consumer konventionellen Konfigurationsnamen, aber Sie könnten immer die Bedingung Logik ein wenig mit $(Configuration).Contains etc oder einfach nur in das Paket Readme
Diese Antwort sollte betroffen sein. Vielen Dank. –