2010-10-19 13 views
32

Używamy TFS i VS 2010.help with TFS i odnośniki DLL

Pracowałem nad projektem, który używa TFS jako kontroli źródła. Mam sporo bibliotek dll, które mam pobrane (takie jak log4net) i odniesienia w moim projekcie.

Kiedy nowy programista połączył się z TFS i usunął mój projekt z kontroli kodu źródłowego, nie udało mu się zbudować, ponieważ powiedział, że brakuje wszystkich odnośników.

Co zrobiłem źle tutaj? Jak mogę dołączyć te odnośniki DLL do kontroli źródła. Czy muszę dodać wszystkie te biblioteki DLL do mojego projektu przed ich odniesienia? kiedy do nich odwoływałem, po prostu przeglądałem, gdzie były w moim systemie plików.

Dziękujemy!

Odpowiedz

45

Okazało się, że najlepszą praktyką bibliotek DLL innych firm jest utworzenie folderu "Biblioteka" w strukturze pliku sln/proj i skopiowanie wszystkich niezbędnych bibliotek DLL do tego folderu lokalnego w celach informacyjnych. Będziesz także chciał się upewnić, że te pliki DLL są zaznaczone w kontrolce źródła. W ten sposób każdy, kto pracuje nad projektem, otrzymuje dokładnie te same wersje wszystkich bibliotek DLL, a ścieżki referencyjne są dokładnie takie same.

Odwoływanie się do bibliotek stron trzecich w dowolnej lokalizacji pobierania lub instalowania będzie stanowić problem, ponieważ będzie wymagać od wszystkich programistów zachowania tej samej struktury pobierania dla wszystkich bibliotek DLL. Ponadto, jeśli każdy odwołuje się do bibliotek DLL poza strukturą projektu, trudniej jest zagwarantować, że wszyscy są w tej samej wersji.

Inną opcją byłoby zainstalowanie wszystkich bibliotek DLL w GAC, ale może to być również bardzo uciążliwe, szczególnie przy zarządzaniu wersjami i wdrażaniu.

+2

Ma to dodatkową zaletę, że każdy programista (nowy lub inny) może po prostu uzyskać najnowsze, hit F5 i być uruchomiony bez "gdzie mogę uzyskać DLL X lub jak zainstalować DLL Y" –

+0

Stworzyłem folder biblioteki w 'sln', muszę dodać wszystkie odniesienia, jak otrzymam projekt z serwera. Czy jestem w niewłaściwy sposób? – Mohsen

+0

Zamiast folderu biblioteki lepiej zarządzać menedżerem pakietów NuGet na poziomie rozwiązania. Zgodziłbym się na powyższe rozwiązanie tylko w przypadku, gdyby te pliki DLL nie były dostępne przez nuget. –

1

Próbowałem różnych metod radzenia sobie z tym i zdecydowałem się na upuszczanie wymaganych dll w folderze bin i upewniając się, że są one włączone do projektu do kontroli źródła. Słyszałem, jak ludzie mówią, że to może nie jest dobry pomysł, ale nikt nie przedstawił dla niego dobrego uzasadnienia i dobrze mi się to udało.

Mój drugi wybór polegałby na wydzieleniu miejsca w udziale sieciowym i zorganizowaniu różnych bibliotek 3-osobowych. Możesz umieszczać swoje pliki w folderach z numerami wersji, aby wszystko było proste i każdy powinien mieć dostęp do wszystkiego, czego potrzebują, o ile wszyscy używają normalnych ścieżek sieciowych jako odniesienia.

Dodawanie oddzielnego folderu w projekcie jest również wykonalne, ale wydaje się nieporządne, ponieważ kończy się ono dodatkowymi plikami, których nie chcesz dołączać do wydania.

2

Sugestia Andy'ego jest dobra i użyłem jej w przeszłości. W mojej obecnej pracy mamy folder "referencyjny" w udziale sieciowym, z którego wszyscy możemy korzystać. Mamy tutaj bardzo szybką sieć, ale wszyscy deweloperzy są w jednym biurze. To rozwiązanie nie będzie działać tak dobrze, jeśli masz dużo zdalnych programistów lub powolną sieć.

7

Utworzyłem folder "ThirdPartyDLL" w folderze projektu, w którym skopiowałem wszystkie dodatkowe pliki DLL. Następnie udałem się do explorera źródłowego i dodałem te biblioteki DLL do serwerowego serwera fundacji, więc mogłem być pewny, że używam poprawnych wersji biblioteki DLL dla konkretnych wersji mojej aplikacji (a więc wszyscy inni są na tej samej stronie co ja).

View - inne okna - Źródło coontrol explorer folderze projektu Right Click - dodawanie elementów do folderu

Nie będzie mógł wybrać konkretny folder z DLL w nim, ale zamiast tego można wybrać poszczególne DLL pliki w folderze. W tym oknie pojawi się folder "ThirdPartyDLL".

Po wykonaniu tej czynności biblioteki DLL znajdują się w grupie źródłowej. Za każdym razem, gdy programista sprawdzi, otrzyma najnowszą wersję bibliotek DLL.

Nie zapomnij usunąć starych referencji z aplikacji i zmienić je na folder thirdpartydll.

Kiedyś kopiowałem biblioteki DLL do folderu bin, ale problem, który napotkałem, był po aktualizacji bibliotek DLL. Początkowo, kiedy mój projekt był mały, nie było to nic wielkiego. Teraz, gdy mam wiele bibliotek DLL i aplikacji, które utworzyłem, bardzo trudno było utrzymać spójne wersje bibliotek DLL poza moim projektem. Moim najlepszym przykładem jest licencjonowana biblioteka DLL, którą kupiłem. Po aktualizacji wszystkie aplikacje i biblioteki muszą być w tej samej wersji. Jeśli o tym zapomniałem, miałem dziwne problemy lub aplikacja przestała działać. Teraz, gdy mam wszystko w jednym folderze, dokonuję zmiany raz i wszystko jest uaktualniane.

Mam nadzieję, że to pomoże.