A1) Разница между этими двумя списками заключается в том, что первый набор сборок уже определил необходимые файлы * .extmap.xml, которые используются Visual Studio для автоматической упаковки каждой сборки в zip-файл, который затем кэшируется. независимо от клиента (через веб-браузер).
Если вы посмотрите в эту папку (при необходимости измените расположение установочного диска):
C: \ Program Files (x86) \ Microsoft SDK \ Silverlight \ v4.0 \ Libraries \ Client
Вы увидите, что файлы * .extmap.dll есть почти для всех распространенных сборок Silverlight (если не для всех). Например, вот содержимое System.Windows.Data.extmap.dll:
<?xml version="1.0"?>
<manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<assembly>
<name>System.Windows.Data</name>
<version>2.0.5.0</version>
<publickeytoken>31bf3856ad364e35</publickeytoken>
<relpath>System.Windows.Data.dll</relpath>
<extension downloadUri="System.Windows.Data.zip" />
</assembly>
</manifest>
Если вы будете следовать документации, расположенной здесь , вы увидите, как это построено. Большинство частей должно быть очевидным, с единственным необычным аспектом, потенциально являющимся элементом расширения. Помещая имя файла в атрибут downloadUri, сборка автоматически упаковывается в этот файл (это zip-файл, но расширение может быть любым).
Когда вы ссылаетесь на сборку, такую как System.Windows.Data, он обнаруживает этот файл и использует его во время сборки для создания zip-файла System.Windows.Data.zip. Если две или несколько сборок, на которые имеются ссылки, имеют одно и то же имя файла назначения downloadUri, они будут автоматически объединены в один файл во время сборки.
A2)
Вы можете следовать этому шаблону и создавать файлы * .extmap.dll для каждой сборки, имеющейся во втором списке.
Файл xml должен находиться в той же папке, что и созданная вами сборка.
Для GalaSoft.MvvmLight.SL4 (например, у меня не установлен этот компонент, и я не знаю, подписан ли он). Файл будет называться:
GalaSoft.MvvmLight.SL4.extmap.xml
Это содержимое будет выглядеть примерно так:
<?xml version="1.0"?>
<manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<assembly>
<name>GalaSoft.MvvmLight.SL4</name>
<version>#.#.#.#</version> <!-- needs the version number -->
<!-- if there's a public key token, put it in this element, and
uncomment it -->
<!-- <publickeytoken></publickeytoken> -->
<relpath>GalaSoft.MvvmLight.SL4.dll</relpath>
<extension downloadUri="GalaSoft.MvvmLight.SL4.zip" />
</assembly>
</manifest>
Как только этот файл существует, Visual Studio будет использовать его для создания zip-файла с именем GalaSoft.MvvmLight.SL4.zip . Все это происходит автоматически, когда вы ссылаетесь на dll (если файл extmap.xll находится рядом с исходной сборкой).