6

Visual Studioは、デフォルトですべてのdllを各プロジェクトのbinフォルダーにコピーします。これには、System.Xml.Linq、System.ComponentModel.Composition(SL4以降に含まれる)などのシステムdll(mscorlib.dllとSystem.dllを除く)も含まれます。

これらのファイルは各XAPに含まれているため、XAPのサイズは大幅に大きくなります。私の限られたテストでは、「ローカルコピー」をfalseに設定しても何も壊れないようです。Visual Studioがこれらのファイルをbinパスに追加するのはなぜですか?ユーザーはすでにSilverlightを使用しているので、これらのアセンブリは各ユーザーのGACに既にインストールされていると思いますか、それとも何かが足りないのでしょうか。

4

3 に答える 3

5

あなたが言及したファイルは、Silverlight のランタイム インストールには含まれていません。これらのライブラリを使用する Silverlight アプリケーションは、ダウンロードの一部としてそれらをユーザーに提供する必要があります。

プロジェクト プロパティ ページの [Silverlight] タブで [ライブラリ キャッシュを使用して XAP サイズを削減する] オプションを設定することで、影響の一部を最小限に抑えることができます。

このオプションにより、これらの各ファイルが個別の Zip ファイルに配置され、XAP と同じフォルダーに配置されます。

これは、サイトにさまざまなアプリケーション用の複数の Xap がある場合や、新しいバージョンを頻繁にリリースする場合に役立ちます。めったに変更されない、または多くのユニークな訪問者がアクセスする単一のアプリの場合、それほど役に立ちません。

于 2010-07-06T11:54:56.797 に答える
0

デフォルトでは、一般に GAC に格納されるフレームワーク固有の dll は、出力 bin ディレクトリにコピーされず、クライアント マシン上にあると想定できます。

上記の Copy Local はデフォルトで false に設定されているため、ある段階で true に変更されたと思います。

ただし、どのdllが参照されているかを正確に知らなければ、正確には言えません

于 2010-07-06T10:34:56.820 に答える
0

ここで重要なのは「何も壊れないように見える」ことだと思います。Silverlight アプリは、さまざまなバージョンの多くのプラットフォームおよびブラウザーで実行できるため、自分のマシンまたは他の 1 つまたは 2 つのマシンで動作するからといって、何かが動作すると仮定することはできません。

DLL が含まれている場合、DLL が必要になる可能性があるため、アプリの広範な配布を計画している場合は、DLL が含まれていることを確認する必要があります。

たとえば、モジュールのロードが遅れる Prism ベースのアプリに取り組んできました。XAP のほとんどは、2 番目のモジュールが必要な DLL をシェル XAP で使用できることが保証されているため、約 20k に削減されました。

于 2010-07-07T02:00:12.130 に答える