5

Opracowaliśmy bibliotekę w języku C#, a teraz chcę utworzyć szablon projektu, aby ułatwić prawidłowe korzystanie z biblioteki.Jaki jest najlepszy sposób dołączania odwołań do własnych złożeń w szablonie projektu?

Chcę, aby nowe projekty zawierały odniesienie do zespołu biblioteki, ale wolałyby nie instalować złożenia w GAC lub zależać od zestawu znajdującego się w konkretnej lokalizacji.

To, co myślę, to dołączenie .dll do pliku .zip szablonu projektu. Oznacza to, że znajdzie się gdzieś w folderze projektu nowych projektów. Być może w folderze o nazwie Lib. Następnie wskazówka odniesienia w pliku projektu może wskazywać na ten folder. Czy to dobry pomysł? Jakie problemy mogę napotkać na drodze?

Czy jest jakiś mechanizm włączania takich bibliotek stron trzecich do szablonów projektów, o których nie wiem? Jak sobie z tym poradziłeś? Na pewno nie jestem pierwszy.

+0

Odpowiedź zależy w niewielkim stopniu od sposobu wdrożenia szablonów. Czy używasz VSIX? Czy używasz MSI (Instalator Windows) lub innej technologii ogólnego zastosowania? Czy planowałeś dystrybucję pliku zip i ręczne instrukcje instalacji? –

Odpowiedz

3

Musiałem rozwiązać ten problem w przeszłości. W jednym przypadku była to biblioteka rejestrowania, która została zainstalowana w GAC, co oznaczało, że element Reference po prostu potrzebował nazwy zespołu. W innym przypadku zainstalowaliśmy bibliotekę w systemie plików, utworzyliśmy klucz rejestru, który zawierał lokalizację (na wypadek, gdyby użytkownik się urwał i zmienił lokalizację instalacji na nas) i użył project template wizard do wyszukania klucza rejestru i zapełnienia element, aby mieć poprawną lokalizację w HintPath Reference. (Uwaga: podejście kreatora szablonów wymaga zainstalowania zestawu kreatora w GAC, co brzmi jak próbujesz uniknąć ...)

Jeśli nie chcesz, aby Twoja biblioteka była zainstalowana w GAC lub konkretna lokalizacja, podejście polegające na włączeniu zespołu do projektu jest praktycznie jedyną opcją pozostałą. Pozytywnym aspektem jest to, że wdrożenie szablonu projektu jest dość proste i nie trzeba go oblepiać GAC, niestandardowych kreatorów itd. Z drugiej strony, jeśli kiedykolwiek stworzysz nową wersję swojej biblioteki, użytkownicy będą potrzebować aby zaktualizować kopię biblioteki każdego projektu.

+0

Jakie są konsekwencje instalacji na GAC? z jakich powodów należy tego unikać? –

+1

Podstawową konsekwencją jest to, że kopia zestawu zainstalowanego do GAC "wygrywa". Oznacza to, że możesz mieć zaktualizowaną kopię w folderze aplikacji, ale dopóki nazwa jest zgodna, środowisko uruchomieniowe preferencyjnie załaduje kopię z GAC. Z grubsza analogiczny przykład mógłby wyglądać tak, jakby ścieżka zespołu GAC była pierwszym wpisem w zmiennej PATH i wydano wywołanie LoadLibrary. Może to powodować dziwne zachowanie podczas próby aktualizacji plików binarnych, a zachowanie w tajemniczy sposób się nie zmienia. –

+1

Ponadto, chociaż nie jest to bezpośrednio kwestia GAC, używanie silnych nazw oznacza, że ​​twoje złożenie wymaga teraz zespołu, który pasuje do silnej nazwy, na podstawie której został skompilowany; będziesz musiał albo ponownie skompilować, albo zarejestrować politykę wydawcy, która przekierowuje powiązania do nowszej wersji. –

Powiązane problemy