2016-03-17 15 views
7

Eksperymentujemy z nuget dla naszych projektów studyjnych. Jednak tylko (lub przynajmniej głównie) używamy nuget do własnych referencji zewnętrznych i przechowujemy je w lokalnym repozytorium (udział sieciowy). Chciałbym wiedzieć, jak poradzić sobie z całą sytuacją debugowania/wydania.Debuguj i zwalniaj paczki nuget lokalne repozytorium

Beton (uproszczony) sytuacja:

Mamy główny projekt, który ma odniesień do dwóch wspólnych elementów, które my sami rozwiniętych. Te wspólne komponenty są również używane w innych produktach naszej firmy

Kiedy budujemy główny projekt na serwerze budowania (zadania budowania tfs 2015), tworzymy wersje debugowania i wydania projektu. Możemy jednak określić tylko jeden pakiet nuget dla każdego zewnętrznego odnośnika.

Co chcemy osiągnąć, aby użyć wersji debugowanej współużytkowanych składników podczas kompilacji debugowania i wersji wydania podczas kompilacji wydania. Są to jednak (o ile wiem) faktycznie różne pakiety.

Jaki jest sposób rozwiązania tego problemu? Czy istnieje na przykład sposób włączenia obu wersji wydania i debugowania w pojedynczym pakiecie nuget? Czy można mieć różne konfiguracje nugetów dla różnych ustawień konfiguracji kompilacji?

Znalazłem Best practices with Nuget: Debug or Release?, jednak ten temat nie rozwiązuje mojego problemu. Wątek ten jest raczej dyskusją o tym, czy publikować wersje debugowania lub wydania na zdalny serwer. Chcemy opublikować oba i używać obu, ale tylko na lokalnym serwerze. Nie mamy zamiaru dzielić się naszymi bibliotekami z resztą świata.

Odpowiedz

1

Pakiet NuGet zwykle zawiera tylko jeden zestaw złożeń dla konkretnej struktury docelowej. Nie jest tak naprawdę zaprojektowany do wysyłania wersji debugowania i wydania, ponieważ publikujesz pakiet NuGet, który zostanie wykorzystany przez innych użytkowników. Zwykle nie publikujesz debugowania ani osobnej wersji aplikacji dla użytkowników końcowych.

Być może uda się obejść ten problem, używając custom MSBuild .targets file w pakiecie NuGet, który ma własne referencje i informacje o konfiguracji. Możesz użyć tego pliku .targets jako rozszerzenia do swojego projektu. Zostanie zaimportowany, abyś mógł zdefiniować referencje według potrzeb w oparciu o konfiguracje zdefiniowane w projekcie. To nie jest idealne, ale powinno działać.

+0

Czy to nie oznacza, że ​​dla naszej sytuacji nuget może nie być odpowiednią drogą? Czy poza nuget jest inne podejście, aby włączyć ten rodzaj współdzielonych komponentów do naszego projektu? Jak to robią inni ludzie? Jestem pewien, że nie jesteśmy pierwszą firmą z tą sytuacją. – PaulVrugt

+0

Tak, NuGet może nie być dobrym podejściem dla ciebie. Prawdopodobnie twój udział sieciowy nadal działa w celu debugowania i wydania wersji, więc może nie ma potrzeby, aby to zmienić. –

+2

Naprawdę nie rozumiem, dlaczego nie ma więcej osób z tym samym problemem. Naszkicowałem sytuację, która moim zdaniem jest bardzo powszechna w wielu firmach. W jaki sposób inne firmy konfigurują swój serwer kompilacji do budowania za pomocą zewnętrznych bibliotek? Zaletą korzystania z nuget jest to, że działa on od razu w kompilacjach zadań kompilacji tfs2015 i zapewnia, że ​​wersja odwołania pozostaje taka sama aż do ręcznej aktualizacji. Tracimy tę przewagę, jeśli odejdziemy od nuget. – PaulVrugt