2012-01-19 14 views
1

.NETリソースマネージャを使用してSilverlightアプリケーションをローカライズし、ドイツ語( "de")のサテライトアセンブリをXAPファイルに埋め込みたいとします。そのため、中立言語を "en"に設定し、csprojファイルでサポートされている言語のリストに "de"を追加しました。これは、プロジェクトをローカルに構築するときに問題なく動作します。 MSBuild(TFS)を使用してSilverlightソリューションを構築すると、XAPに埋め込まれたファイル(存在するもの)を取得する代わりに、Silverlightは/ClientBin/de/*.dllのHTTP要求を使用して衛星アセンブリを取得しようとします。 Webサーバーが存在しないファイルの404エラーコードを返すため、Silverlightは初期化エラーでクラッシュします。Silverlightがリソースアセンブリをフェッチできません

アセンブリ情報コードファイルを操作するカスタムTFSビルドアクティビティを削除すると、Silverlightアプリケーションが期待通りに機能することが判明しました。不思議なことに、アクティビティを再び有効にした後も、コンパイルされたXAPアプリケーションは引き続き動作します(別々のブランチで動作する2つの異なるビルド定義で検証済み)。カスタムアクティビティは、アセンブリ属性​​,AssemblyCompany,AssemblyProduct,AssemblyCopyright,AssemblyTrademark,AssemblyVersionおよびAssemblyFileVersionを操作します。

いくつかの追加のヒント:任意のコンパイルが働いXAPに

  • コンテンツを構築するのVisual Studioでの操作のソースをコンパイル
  • を完了する前に

    • カスタムアクティビティは、アセンブリ情報ファイルを変更します(動作していても機能していない)XAPファイルのサイズは同じです(ほぼ同じサイズ、マニフェストファイルの違いはありません)
    • リソースマネージャはResourceManager("Resource", Assembly.GetExecutingAssembly())

    私の質問は以下のとおりです。

    • なぜシルバーだけではなく、XAPファイルのものを使用しての/ClientBin/de/からこれらのサテライトアセンブリを取得しようとしていますか?
    • アセンブリ情報ファイルのどのような属性がこのような動作を引き起こす可能性がありますか?
    • バージョン管理アクティビティを再度有効にしても、XAPが再び破損しないのはなぜですか?
  • 答えて

    1

    これは解決策です:Genericクライアントが接続するURLを調整するために、生成されたXAP内のファイルを編集するために「Total Commander」というツールを使用します。ローカリゼーションDLLを追加したので、Total CommanderでXAPを編集すると、上記の動作につながります。 WinRARまたは内部WindowsアーカイブマネージャでXAPを操作すると、すべて正常に動作します。

    編集:総司令官は、WinRARのとSilverlight Toolsはスラッシュ(/)を使用するのに対し、ディレクトリを区切るためにバックスラッシュ(\)を使用していることを、私たちが発見XAPファイルを比較した後。ここで隠されたSilverlightの機能を発見したようです;-)

    +0

    良いキャッチ、ありがとう;) – tomasK

    関連する問題