Derzeit packe ich die Release-Builds mit Nuget für die offiziellen Builds auf nuget.org, aber ich packe die Debug-Builds mit Nuget für die Symbolquellen-Pushs auf symbellsource.org.
EDIT: (Jon Skeet, mit einigen Vorurteilen von Noda Time Entwicklung)
NuGet unterstützt jetzt das Pushen sowohl zur NuGet-Galerie als auch zu Symbolsource.org (oder ähnlichen Servern), wie dokumentiert . Leider gibt es hier zwei widersprüchliche Anforderungen:
- Wenn nur mit einer Bibliothek , ohne dass für das Debuggen, wollen Sie wirklich ein Release - Build. Dafür sind schließlich Release-Builds gedacht.
- Wenn Sie zu Diagnosezwecken in eine Bibliothek debuggen, möchten Sie wirklich einen Debug-Build, bei dem alle entsprechenden Optimierungen deaktiviert sind. Dafür sind Debug-Builds schließlich da.
Das wäre in Ordnung, aber NuGet erlaubt (soweit ich das beurteilen kann) nicht, dass sowohl die Release- als auch die Debug-Builds auf nützliche Weise im selben Paket veröffentlicht werden.
Die Auswahlmöglichkeiten sind also:
- Verteilen Sie die Debug-Builds an alle (wie im Beispiel in den Dokumenten gezeigt) und leben Sie mit Treffern jeder Größe und Leistung.
- Verteilen Sie die Release-Builds an alle und leben Sie mit einer leicht beeinträchtigten Debug-Erfahrung.
- Entscheiden Sie sich für eine wirklich komplizierte Verteilungsrichtlinie, die möglicherweise separate Release- und Debug-Pakete bereitstellt.
Die ersten beiden beschränken sich wirklich auf die Unterschiede zwischen Debug- und Release-Builds ... obwohl es erwähnenswert ist, dass es auch einen großen Unterschied gibt, ob Sie in den Code einer Bibliothek eintreten möchten, weil Sie ein bestimmtes Verhalten überprüfen möchten oder nicht um den Code einer Bibliothek zu debuggen, weil Sie glauben, einen Fehler gefunden zu haben. Im zweiten Fall ist es wahrscheinlich besser, den Code der Bibliothek als Visual Studio-Lösung abzurufen und auf diese Weise zu debuggen, damit ich dieser Situation nicht zu viel Aufmerksamkeit schenke.
Meine Versuchung ist einfach zu halten mit der Release - Builds, mit der Erwartung , dass relativ wenige Menschen zu debuggen benötigen, und diejenigen , die tun nicht beeinträchtigt werden viel von den Optimierungen in dem Release - Build. (Der JIT-Compiler übernimmt sowieso den größten Teil der Optimierung.)
Gibt es andere Optionen, die wir nicht in Betracht gezogen hatten? Gibt es andere Überlegungen, die das Gleichgewicht beeinflussen? Ist die Weitergabe von NuGet-Paketen an SymbolSource so neu, dass "Best Practice" wirklich nicht etabliert wurde?
nuget pack ... -Symbol
die generierten Pakete verwende und pushe ...