Скопировать локальный и системные dlls' - какой смысл?

Visual Studio копиями по умолчанию все dlls' к папке мусорного ведра каждого проекта. Это также включает системные dlls' (за исключением mscorlib.dll и System.dll), такие как Система. Xml. Linq, Система. ComponentModel. Состав (включенный начиная с SL4) и т.д.

Так как эти файлы включены в каждый XAP, размеры XAP значительно растут. В моем ограниченном тестировании установка "Copy local" ко лжи, кажется, ничего не повреждает. Почему Visual Studio добавляет эти файлы к пути мусорного ведра? Так как у пользователя уже была бы Silverlight, я могу предположить, что эти блоки уже установлены в GAC каждого пользователя, или я пропускаю что-то?

6
задан Blake Pettersson 6 July 2010 в 10:22
поделиться

3 ответа

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

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

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

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

5
ответ дан 17 December 2019 в 04:41
поделиться

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

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

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

0
ответ дан 17 December 2019 в 04:41
поделиться

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

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

Однако, не зная, о каких именно библиотеках идет речь, я не могу сказать точно

0
ответ дан 17 December 2019 в 04:41
поделиться