0

過去に、次の URL で概説されているソリューションを使用して、モジュラー Silverlight アプリケーションでサード パーティの dll を複数回ダウンロードすることを回避しました。

共通ファイルを削除して Silverlight XAP ファイルのサイズを最適化する方法は?

ただし、これが機能しない Visual Studio 2010/Silverlight 5 ソリューション アプリケーションに取り組んでいます。

私は PRISM モジュールを持っています。Parent1.csproj と呼びましょう。これはサードパーティの dll への参照を持っていませんが、サードパーティの dll である child1.csproj と child2.csproj を参照する他の 2 つのプロジェクト ファイルへの参照があります。

child1.csproj と child2.csproj の両方で、3rdParty.dll の「ローカルのコピー」が false に設定されていますが、それにもかかわらず、Parent1.csproj の .xap ファイルにはサード パーティの dll が含まれています。

「ローカルのコピー」を false に設定して Parent1.csproj ファイルに child1.csproj および child2.csproj の参照を設定すると、サード パーティの dll がなく、子プロジェクトの他のコードも含まれない、大幅に削減された xap ファイルが得られます。私は実際に実行できる必要があります。

含まれているプロジェクト ファイルの "ローカル コピー" 設定が無視され、代わりに親の "ローカル コピー" 設定が使用されているようです。これらの 3rdParty.dll を除外する方法はありません。

ここで微妙なことを見逃しましたか?シェル アプリケーションが 3rdParty.dll を既にダウンロードしている場合に、これらの 3rdParty.dll を複数のモジュールにダウンロードすることを回避できる他の方法はありますか?

4

2 に答える 2

0

この問題が発生する理由は 100% わかりませんが、Prism に関連しています。私たちが解決した方法は、すべてのスタートアップ プロジェクトと各サブ プロジェクトへの参照を追加することです。これらは直接参照されていませんが、そのプロジェクトです。

  1. すべてのプロジェクトで「アプリケーション ライブラリ キャッシュを使用して XAP サイズを削減する」が有効になっていることを確認します。

  2. Parent1.csprojすべてのサードパーティ dllへの参照があることを確認してください。

  3. child1.csprojこれらの同じ参照をおよびに追加しchild2.csprojます。

  4. すべてのサードパーティdll の extmap ファイルがあることを再確認してください。これらが見つからない場合、dll は XAP ファイルにロードされます。

于 2012-04-24T15:04:41.870 に答える
0

モジュールプロジェクトへの参照を追加し、 Copy Local を false に設定すると機能します。これは、受け入れられた回答が説明するものです。ただし、アプリケーション ライブラリ キャッシングは Prism モジュールではサポートされていないため、期待どおりに動作しない可能性があります。

アセンブリ参照が多数ある場合、この方法でそれらを追加するのはあまり保守的ではありません。XAP から不要なアセンブリを削除するビルド後の手順を使用することもできます。これは私がその方法について書いた短い記事です。

于 2013-09-15T21:05:04.790 に答える