Najlepsze praktyki z Nuget: Debugowanie lub Release?

Obecnie pakuję wersje kompilacji z Nugetem do oficjalnych kompilacji do nuget.org, ale pakuję kompilacje debugowania z Nuget, ponieważ źródło symboli wypycha do symbolsource.org.

EDYCJA: (Jon Skeet, z pewną stronniczością z rozwoju Nody Time)

NuGet obsługuje teraz pchanie do obu galerii NuGeti symbolsource.org (lub podobne serwery),jak udokumentowano. Niestety, istnieją tutaj dwa sprzeczne wymagania:

Po prostuza pomocą biblioteka bez potrzeby debugowania, naprawdę chcesz kompilacji wydania. Po to właśnie powstają kompilacje.Podczas debugowania w bibliotece w celach diagnostycznych naprawdę chcesz, aby kompilacja debugowania była wyłączona. Po to właśnie są kompilacje debugowania.

To byłoby w porządku, ale NuGet nie pozwala (o ile mogę powiedzieć), aby kompilacje wydania i debugowania były publikowane w użyteczny sposób, w tym samym pakiecie.

Tak więc do wyboru są:

Rozdaj kompilacje debugowania wszystkim (jak pokazano w przykładzie w dokumentach) i przeżyj z każdym trafieniem rozmiaru i wydajności.Rozpowszechniaj kompilacje wersji dla wszystkich i korzystaj z nieco osłabionego doświadczenia z debugowaniem.Przejdź do naprawdę skomplikowanej polityki dystrybucji, potencjalnie udostępniając osobne pakiety wydania i debugowania.

Pierwsze dwa sprowadzają się do wpływu różnic między kompilacjami debugowania i wydania ... chociaż warto zauważyć, że istnieje również duża różnica między chęcią wkroczenia do kodu biblioteki, ponieważ chcesz sprawdzić pewne zachowanie i chcieć debugować kod biblioteki, ponieważ uważasz, że znalazłeś błąd. W drugim przypadku prawdopodobnie lepiej jest pobrać kod bibliotekijako rozwiązanie Visual Studio i debuguj w ten sposób, więc nie zwracam zbytniej uwagi na tę sytuację.

Moją pokusą jest trzymanie się wersji kompilacji, z takim oczekiwaniemstosunkowo niewiele osób będzie musiało debugować, a ci, którzy tego nie zrobią, nie zostaną dotknięcidużo przez optymalizacje w kompilacji wydania. (Kompilator JIT robi większość optymalizacji.)

Czy są inne opcje, których nie rozważaliśmy? Czy są inne względy, które przechylają równowagę? Czy wypychanie pakietów NuGet do SymbolSource jest wystarczająco nowe, że „najlepsza praktyka” naprawdę nie została ustanowiona?

questionAnswers(3)

yourAnswerToTheQuestion