Скопируйте локальные и системные dll'ы - какой смысл? - PullRequest
6 голосов
/ 06 июля 2010

Visual Studio по умолчанию копирует все библиотеки DLL в папку bin каждого проекта. Это также включает системные библиотеки DLL (за исключением mscorlib.dll и System.dll), такие как System.Xml.Linq, System.ComponentModel.Composition (входит в состав SL4) и т. Д.

Поскольку эти файлы включены в каждый XAP, размеры XAP значительно увеличиваются. В моем ограниченном тестировании установка «Копировать локально» на false, похоже, ничего не нарушает. Почему Visual Studio добавляет эти файлы в путь к корзине? Поскольку у пользователя уже есть Silverlight, могу ли я предположить, что эти сборки уже установлены в GAC каждого пользователя или я что-то упустил?

Ответы [ 3 ]

5 голосов
/ 06 июля 2010

Упомянутые вами файлы не включены в установку Silverlight во время выполнения.Приложение Silverlight, использующее эти библиотеки, должно предоставить их пользователю как часть загрузки.

Вы можете минимизировать некоторые последствия, установив параметр «Уменьшить размер XAP с помощью кэширования библиотеки» на вкладке Silverlightстраницы свойств проекта.

Эта опция заставляет каждый из этих файлов помещаться в отдельные Zip-файлы, которые будут помещаться в ту же папку, что и XAP.

Это помогает в тех случаях, когда на вашем сайте может быть несколько Xaps для различных приложений или когда вы часто выпускаете новые версии.Для одного приложения, которое редко меняется или поражено многими уникальными посетителями, это не очень полезно.

0 голосов
/ 07 июля 2010

Я думаю, что ключ здесь «кажется, ничего не ломает».Поскольку приложения Silverlight могут быть запущены на многих платформах и в браузерах с различными версиями, вы не можете предполагать, что что-то будет работать, потому что оно работает на вашем компьютере или даже на одном или двух других.

Если включены библиотеки DLL, это потому, чтоони потенциально необходимы, поэтому вы должны быть уверены, что они будут там, если вы планируете широкое распространение своего приложения.

Например, я работал над приложением на основе Prism с отложенной загрузкой модулей,Большинство XAP-файлов было сокращено примерно до 20 тыс., Потому что вторичные модули гарантированно смогут использовать те библиотеки DLL, которые им необходимы, как и в Shell XAP.

0 голосов
/ 06 июля 2010

Not По умолчанию библиотеки DLL, специфичные для платформы и обычно хранящиеся в GAC, не копируются в каталог bin вывода, и вы можете предположить, что они будут на клиентском компьютере.

Копировать Local на вышеупомянутых по умолчанию на false, поэтому я считаю, что на каком-то этапе они были изменены на true.

Однако, не зная точно, на что ссылаются dll, я не могу сказать точно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...