2010-07-06 14 views
6

Program Visual Studio domyślnie kopiuje wszystkie biblioteki DLL do folderu bin każdego projektu. Obejmuje to także biblioteki systemowe (z wyjątkiem mscorlib.dll i System.dll), takie jak System.Xml.Linq, System.ComponentModel.Composition (uwzględnione od wersji SL4) itp.Skopiuj lokalne i systemowe biblioteki dll "- o co chodzi?

Ponieważ te pliki są zawarte w każde XAP, rozmiary XAP rosną znacznie. W moich ograniczonych testach ustawienie "Copy local" na false nie wydaje się niczego zakłócać. Dlaczego Visual Studio dodaje te pliki do ścieżki bin? Ponieważ użytkownik miałby już Silverlight, czy mogę założyć, że te złożenia są już zainstalowane w GAC każdego użytkownika, czy też czegoś brakuje?

Odpowiedz

5

Pliki można wymienić nie zostały uwzględnione w czasie wykonywania zainstalować Silverlight. Aplikacja Silverlight korzystająca z tych bibliotek musi dostarczyć je użytkownikowi w ramach pobierania.

Możesz zminimalizować część wpływu poprzez ustawienie opcji "Zmniejsz rozmiar XAP przy użyciu buforowania biblioteki" na karcie Silverlight na stronach właściwości projektu.

Ta opcja powoduje umieszczenie każdego z tych plików w oddzielnych plikach ZIP, które zostaną umieszczone w tym samym folderze, co XAP.

Pomaga to w scenariuszach, w których witryna może mieć wiele Xaps dla różnych aplikacji lub w których często wydaje się nowe wersje. W przypadku jednej aplikacji, która rzadko się zmienia lub jest trafiona przez wielu niepowtarzalnych użytkowników, nie jest tak pomocna.

+0

Całkowicie ma sens. Dzięki za informację ... bardzo pomocne. – user1961100

0

Nie domyślnie pliki dll, które są specyficzne dla struktury, które są zwykle przechowywane w GAC, nie są kopiowane do wyjściowego katalogu bin i można założyć, że znajdują się na komputerze klienta.

Kopiowanie lokalne na wyżej wymienionych jest domyślnie ustawione na false, więc wierzę, że w pewnym momencie zostały zmienione na prawdziwe.

Jednakże, nie wiedząc dokładnie, co DLL są dalej nie mogę powiedzieć dokładnie

+0

W moim przypadku są to System.Xml.Linq, System.Windows, System.ComponentModel.Composition, System.Runtime.Serialization i System.Windows.Browser. –

+0

@Blake: Wszystkie te biblioteki DLL są częścią zestawu SDK i będą musiały być dostarczane z witryny jako biblioteki buforowane (zobacz moją odpowiedź) lub jako część Xap. – AnthonyWJones

0

Myślę, że kluczem tutaj jest "nie wydaje się niczego łamać". Ponieważ aplikacje Silverlight można uruchamiać na wielu platformach i przeglądarkach w różnych wersjach, nie można założyć, że coś będzie działać, ponieważ działa na komputerze, a nawet na jednym lub dwóch innych.

Jeśli pliki DLL są dołączone, ponieważ są potencjalnie potrzebne, więc musisz mieć pewność, że będą tam, jeśli planujesz szeroką dystrybucję swojej aplikacji.

Na przykład pracowałem nad aplikacją opartą na Prism z opóźnionym ładowaniem modułów. Większość XAP-ów została zmniejszona do około 20k, ponieważ moduły dodatkowe mają możliwość korzystania z bibliotek DLL, których potrzebują, ponieważ są one w XAP powłoki.

Powiązane problemy