2

「標準」アセンブリを xap ファイル (Silverlight 4 アプリケーション) から移動する必要があります。同様の問題(Silverlight:標準アセンブリの処理方法)があり、深い説明との適切なリンクがありました。しかし、すべてが明確であるわけではありません。

「アプリケーション ライブラリ キャッシュを使用して XAP サイズを縮小する」をオンにすると、xap ファイルのサイズが 2 倍になり、次のアセンブリが別の zip ファイルに移動されました。

  • System.ComponentModel.DataAnnotations;
  • System.Windows.Controls、
  • System.Windows.Controls.Data、
  • System.Windows.Controls.Data.Input、
  • System.Windows.Controls.Input、
  • System.Windows.Controls.Navigation、
  • System.Windows.Controls.Toolkit;
  • System.Windows.Data.

ただし、別のファイルに移動するのに適していると思われるものは他にもいくつかあります。

  • GalaSoft.MvvmLight.SL4、
  • Microsoft.Practices.ServiceLocation、
  • Microsoft.Practices.Unity.Silverlight、
  • System.Windows.Controls.Toolkit.Internals.

これらのアセンブリはすべて、Silverlight アプリケーション (およびこれらのアセンブリを使用する Silverlight プロジェクト) から参照されます。

説明してください:

  • Q1. これらの言及されたアセンブリの違いは何ですか?
  • Q2. これらの 4 つのアセンブリを別の zip ファイルに移動する方法も教えてください。

どうもありがとうございました!

PSおそらく、私の質問に対する答えはテキストにあります:

Silverlight SDK のライブラリ アセンブリへの参照、または有効な assemblyShortName.extmap.xml マッピング ファイルを伴う任意のアセンブリへの参照を追加します。

しかし、それが何を意味するのかわかりません。理解が正しければ、(移動したい) アセンブリの参照を Silverlight SDK に追加する必要があります。しかし、それを行う方法は?ありがとう。

4

1 に答える 1

8

A1) 2 つのリストの違いは、アセンブリの最初のセットが必要な *.extmap.xml ファイルを既に定義していることです。これらのファイルは、Visual Studio によって使用され、各アセンブリを zip ファイルに自動的にパッケージ化します。クライアント (Web ブラウザ経由)。

このフォルダーを調べると (必要に応じてインストール ドライブの場所を調整します):

C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Libraries\Client

ほとんどすべての一般的な Silverlight アセンブリ (すべてではないにしても) に対して *.extmap.dll ファイルがあることがわかります。たとえば、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 が作成されます。2 つ以上の参照アセンブリが両方とも同じ downloadUri 宛先ファイル名を共有している場合、それらはビルド時に 1 つのファイルに自動的に結合されます。

A2) そのパターンに従って、2 番目のリストにあるアセンブリごとに *.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 はそれを使用してGalaSoft.MvvmLight.SL4.zipという名前の zip ファイルを作成します。dll を参照すると、これはすべて自動的に行われます (extmap.xll ファイルが元のアセンブリと並んでいる限り)。

于 2010-07-31T01:05:09.120 に答える