2009-08-17 17 views
8

Potrzebuję pomocy w zakresie rozwiązania Visual Studio i organizacji projektu.Najlepsze praktyki organizowania rozwiązania Visual Studio

Mam rozwiązanie z kilkoma projektami. Wszystkie są napisane w języku C# i są skompilowane jako biblioteki używane przez GUI. Niektóre z tych bibliotek mają również zależności z innymi. Na przykład, TestExecutive potrzebuje LoggingFramework, Communications potrzebuje również LoggingFramework.

Jaki jest najlepszy sposób organizacji? Zastanawiam się nad folderami zespołów do przechowywania plików binarnych bibliotek w jednym miejscu. Coś jak:

Solution 
    | 
    |-- TestExecutive 
    |-- LoggingFramework 
    |-- assemblies 

Istnieje również inny problem. Jeden z projektów korzysta z natywnej biblioteki dll. Gdzie muszę umieścić tę bibliotekę? Z zespołem bibliotekarskim lub z ostatecznym plikiem wykonywalnym?

EDIT:

Ok, teraz załóżmy mam uruchomiony program WinForms. Mam mieszany kod źródłowy i binaria. Jakie funkcje muszę wygenerować, co mogę rozpowszechniać? Mam na myśli wszystkie biblioteki i pliki konfiguracyjne, ale bez kodu źródłowego. Zrobiłem to wcześniej z instalatorem Nullsoft, ale nie wiem, czy visual studio może ci w tym pomóc.

+1

Jednym z typów projektów jest projekt instalatora. Po prostu dodaj to do swojego rozwiązania. Istnieje wiele samouczków rozproszonych w Internecie lub na MSDN. – Clyde

+0

każde ostateczne rozwiązanie z pełnym kodem źródłowym próbującym pracować nad tym? – Kiquenet

Odpowiedz

8

Kilka rzeczy tutaj:

  1. Kiedy jeden projekt zależy od drugiego, można skonfigurować tę zależność w Visual Studio. Kliknij prawym przyciskiem myszy na projekcie i wybierz zależności projektu ...

  2. Dla innych zespołów .NET, które NIE są częścią twojego rozwiązania (narzędzia innych firm itp.) Robię dokładnie to, co tutaj pokazałeś - mam oddzielną folder równoległy do ​​projektów. Następnie skonfigurowałem odwołanie do zestawu w każdym projekcie z ustawieniem "Kopiuj lokalnie" na wartość true i działa poprawnie.

  3. Dla natywnych bibliotek dll C, jest trochę inaczej. Nie ma bezpośredniego odniesienia do nich w sekcji odnośników eksploratora rozwiązań. Kompilator nie będzie patrzył na bibliotekę dll, aby sprawdzić referencje p/invoke lub coś podobnego. Musisz tylko upewnić się, że biblioteka dll jest częścią wdrożenia na twoim internetowym lub wirtualnym projekcie najwyższego poziomu. Jest to plik zawartości podobny do pliku css lub obrazu lub czegoś podobnego. Wystarczy dodać go jako plik w projekcie i upewnij się, że „Budowanie Akcja” jest ustawiony na treść, tak wizualne wie po prostu skopiować plik studia w ramach wdrażania

5

mogę ustawić foldery rozwiązanie trochę w górę inaczej niż ty. Na najwyższym poziomie Mam następujące foldery:

\build 
\lib 
\src 

Folder build ma zbudować skryptów (Nant, msbuild itp). Wszelkie zespoły innych producentów (lub cokolwiek, czego nie buduję w rozwiązaniu), zostaną umieszczone w folderze lib w odpowiednim podfolderze. Na przykład będę mieć foldery log4net, NUnit, RhinoMocks w folderze lib, z których każda zawiera pliki potrzebne dla tej zależności. Folder src ma rozwiązanie i wszystkie pliki projektu.

Podoba mi się ta struktura, ponieważ wyraźnie określa ona kod projektu i inne elementy wymagane przez projekt. Zazwyczaj konfiguruję również niestandardowe zadania kompilacji, aby skopiować powstałe zespoły dla mojego projektu do folderu \ deploy lub \ lib \.W ten sposób nie musisz polować w folderze \ src \\ bin \\, aby uzyskać zbudowany zespół lub cały projekt; jednak wydaje się to nieco wykraczać poza zakres twojego pytania.

Btw ... Nie wymyśliłem tej struktury na własną rękę, myślę, że zacząłem używać Tree Surgeon i ewoluowałem od tego procesu.

+0

Not out of the EDIT ;-) Dzięki za informację. – yeyeyerman

+0

Blog z serii "Drzewo Drzewo genealogiczne" jest naprawdę dobry. –

+0

Zajęło mi trochę czasu, aby wykopać te posty. Możesz je znaleźć [tutaj] (https://mikebroberts.com/articles/how-to-setup-a-net-development-tree/). – Ryogi