Silverlight: как обращаться со стандартными сборками - PullRequest
0 голосов
/ 25 июля 2010

Обычная задача Silverlight: уменьшить размер xap-файла.Существует множество полезных руководств, которые объясняют, как сделать ваше приложение модульным.Но я не нашел никого, кто бы объяснял, как создавать «модульные» стандартные библиотеки.

Большую часть моего xap-файла (1.7Mb, когда общий размер составляет 1.8Mb) занимают стандартные сборки: средиих System.Windows.Controls.dll - 370 КБ, System.Windows.Controls.Data.dll - 464 КБ и т. д. *

Не могли бы вы рассказать (или дать ссылку на руководство), как перемещать эти сборкииз файла xap?Я мог бы использовать prism / unity и загружать их динамически, но в этом случае мне нужно удалить ссылки на эти сборки из моих библиотек Silverlight ... и они становятся не компилируемыми ...

Подробности: предположим, у меня естьПроект "ModuleAView", который содержит страницы для моего приложения.Этот модуль находится в отдельной сборке ... но он все еще довольно большой (он содержит все упомянутые библиотеки).Если я удалю библиотеки из проекта, мои XAML-файлы станут некомпилируемыми.

Пожалуйста, сообщите.Спасибо.

Ответы [ 2 ]

1 голос
/ 27 июля 2010

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

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

Как правило, для больших составных приложений вы загружаете хост-приложение, которое принимает «попадание» в DLL (то есть, если вы используете x, y и z, они будут включены в хост). Другим вариантом является облегченный вводный XAP, затем загрузите дополнительные в фоновом режиме.

В любом случае, ключ заключается в том, чтобы выработать стратегию взаимосвязи ваших проектов, чтобы вы включали DLL только один раз. Если у вас есть файл XAP, содержащий необходимую DLL, любой другой XAP, загруженный в то же приложение, может установить ссылку на «copy-local = false». Это означает, что он по-прежнему будет ссылаться, например, на System.Windows.Controls.Data.dll, но фактически не будет сохранять копию в сгенерированном XAP.

Итак, еще раз, если вы хотите уменьшить объем и время загрузки исходного файла, у вас может быть: Application.xap, который запускается и предоставляет пользователю навигацию, заставку и т. Д. Он мгновенно динамически загружает «библиотеки». .xap ", который содержит зависимые библиотеки DLL (элементы управления и т. д.) в фоновом режиме, и, наконец, любые другие" Module1.xap "и" Module2.xap "будут просто ссылаться на библиотеки DLL, но для локальной копии будет установлено значение false.

У меня есть подробный пример с исходным кодом: http://csharperimage.jeremylikness.com/2010/06/advanced-silverlight-applications-using.html

...