Obecnie kompiluję wersje wydań z Nuget dla oficjalnych kompilacji na nuget.org, ale pakuję kompilacje debugowania z Nuget, aby źródło symbolu przepchało się do symbolsource.org.Najlepsze praktyki z Nuget: Debugowanie lub wydawanie?
EDIT: (Jon Skeet, z jakiegoś błędu z rozwojem Noda czas)
Nuget teraz obsługuje zarówno do pchania galerii Nuget i symbolsource.org (lub podobny), serwery as documented. Niestety, istnieją dwa przeciwstawne wymagania tutaj:
- Kiedy tylko użyciu bibliotekę bez potrzeby debugowania, naprawdę chcesz kompilacji uwolnienia. W końcu to są kompilacje wydań.
- Podczas debugowania biblioteki do celów diagnostycznych, naprawdę potrzebujesz kompilacji debugowania z wyłączonymi wszystkimi odpowiednimi optymalizacjami. W końcu to są właśnie wersje do debugowania.
To byłoby w porządku, ale NuGet (o ile wiem) nie pozwala, aby kompilacje wydania i debugowania były publikowane w użyteczny sposób, w tym samym pakiecie.
Tak, do wyboru są:
- rozprowadzić debug buduje dla każdego (jak pokazano w przykładzie z docs) i żyć z dowolnej wielkości i wydajności trafień.
- Rozłóż kompilacje wydań wszystkim i żyj z lekko ograniczonym doświadczeniem debugowania.
- Przejdź do bardzo skomplikowanej polityki dystrybucji, potencjalnie dostarczając osobne pakiety wydań i debugowania.
Pierwsze dwa naprawdę sprowadzają się do wpływu różnic między debugowania i uwalniania buduje ... choć warto zauważyć, że istnieje również duża różnica między chcąc wkraczać do kodu biblioteki, ponieważ chcesz sprawdź zachowanie i chcesz debugować kod biblioteki, ponieważ uważasz, że znalazłeś błąd. W drugim przypadku lepiej jest uzyskać kod biblioteki jako rozwiązanie Visual Studio i debugować w ten sposób, więc nie zwracam zbyt dużej uwagi na tę sytuację.
My pokusa jest po prostu trzymać się z wydaniem buduje, z oczekiwaniem, że stosunkowo niewiele osób będzie potrzebować do debugowania, a tymi, którzy robią nie będzie miała wpływu znacznie przez optymalizacje w budowie uwalnianiu. (Kompilator JIT wykonuje większość optymalizacji.)
Czy są inne opcje, których nie rozważaliśmy? Czy istnieją inne czynniki, które przechylają równowagę? Czy pchanie pakietów NuGet do SymbolSource jest wystarczająco nowe, że "najlepsza praktyka" naprawdę nie została ustalona?
Już miałem zadać to samo pytanie - chociaż obecnie naciskam konfigurację Release na symbole, ponieważ używam 'pakietu nuget ... -Symbol' i przesuwania wygenerowanych pakietów. . –
Nie mogę się doczekać, kiedy będę edytować więcej szczegółów mojego własnego kontekstu na twoje pytanie? Myślę, że wyjaśni to kilka powodów do zadawania pytań. –
Idź przed siebie. Nadgonię dzisiaj wszystkie te nowe posty. – gzak