Współdzielenie kodu w .NET
Współdzielenie kodu pomiędzy projektami przyspiesza dodawanie nowych funkcjonalności i zmniejsza ilość występujących błędów. Jak łączyć wspólne fragmenty w dotnecie? Jeżeli projekty używają tej samej wersji frameworka, to jest to bardzo łatwe i intuicyjne. W przeciwnym wypadku sprawy nieco się komplikują. Zapraszam na opis sposobów wielokrotnego użycia kodu w świecie .NET, które możesz zaadaptować do innych technologii.
Kompatybilne
Najprostsza sytuacja. Wszystkie projekty używają tej samej wersji frameworka. Jeżeli programujesz w .NET to jestem pewien, że już masz to za sobą. Tej sytuacji nie udziwniaj, szukając zaawansowanych sposobów reużycia kodu. Dodaj współdzielony projekt w odpowiednich solucjach i ustaw referencje do nich. Działa, voila.
Względnie kompatybilne
Nierzadko programując w dotnecie używasz niezgodnych ze sobą wersji frameworka. Ze względu na zmieniający się świat jest to coraz popularniejsze. Nie dziwi fakt, że kod musi być tworzony na różne platformy. Przykładowo:
- MVC w .NET Framework – Windows
- API w .NET Core – Linux
- Xamarin – Android i IOS
Microsoft kilkukrotnie próbował rozwiązać ten problem. Do dyspozycji mieliśmy Portable Class Library (PCL) i Universal Windows Platform (UWP). Teraz preferowanym rozwiązaniem jest projekt .NET Standard. Ten typ projektu ma określoną specyfikację, a poszczególne implementacje .NET są z nią zgodne. Więcej szczegółów na stronie Microsoftu. Taki projekt, jak poprzednio, możesz dodać do różnych solucji lub stworzyć z niego paczkę nugetową i skonsumować w innych projektach.
Niekompatybilne
Coraz rzadziej, ale jednak nadarza się okazja pracy ze starszymi technologiami. Takim przykładem może być, Compact Framework dla czytnika kodów kreskowych oraz aplikacja desktopowa z nowoczesnym UI, powiedzmy WPF. Pomimo identycznie wyglądającego kodu, zwłaszcza modeli, te wersje frameworka są ze sobą niekompatybilne. Co za tym idzie, nie możliwości skompilowania takiego kodu do wspólnej binarki. Na szczęście istnieje pewne obejście. I nie mówię tu o kopiowaniu plików. VisualStudio pozwala na dodawanie referencji plików do projektów. Zatem nic nie stoi na przeszkodzie, by dodać ten sam plik do kilku projektów. Co prawda, robienie tego na dużą skalę jest problematyczne, ale takie elementy jak enumy, modele, ewentualnie prosta walidacja, jak najbardziej tu pasują. Jak to zrobić?
Kliknij na projekcie, a potem `Add` => `Existing item…` => `Add As Link`, wybierasz plik i gotowe.
Na koniec
Czy warto współdzielić kod? Zazwyczaj tak, czasem nie, chociaż to temat na innego posta. Jeżeli masz projekt w dotnecie to już wiesz jak możesz to tego podejść. Natomiast w przypadku innych technologii masz już pewną ideę. Skorzystasz? A może robisz to już od dawna i chciałbyś coś dodać? Może coś pominąłem? A może z czymś się nie zgadzasz? Daj znać komentarzach.
2 Komentarze
cezarypiatek · 2018-10-05 o 19:19
Jest jeszcze jedna możliwość współdzielenia kodu – Shared Project. Można ją stosować w przypadku tych „niekompatybilnych” projektów lub jeśli z pewnych powodów chcemy mieć tylko jedną dll’kę jako wynik kompilacji naszego kodu (alternatywa dla ILmerg’a). Tutaj jest post o podobnej tematyce który porusza też zastosowanie shared project https://blogs.msdn.microsoft.com/dotnet/2014/04/21/sharing-code-across-platforms/
Jerzy Wickowski · 2018-10-06 o 07:40
Cześć @cezarypiatek,
Bardzo mi miło, że mi napisałeś. Nie miałem styczności z Shared Project, jakoś mnie to ominęło. Zbadam sprawę i zaktualizuję wpis.
Dziękuję.