Silverlight for Windows Embedded (C++ ベース) 開発において、リソース読み込み時に
この問題を解消するには、XRPack ツールをバージョン 7.00.2825 に更新し、
この現象の原因は、
Note: 数値のパーセンテージ (例: 5.2%, -36.0%) はビルド進捗 rate を示す出力であり、負値は圧縮効率のNegative ratio 表記の可能性があり、実際のエラーではありません。
---
XAML ページの更新手順:
Blend for Windows Embedded で UI を変更した場合は、Visual Studio 2008 環境に再同期する必要があります。
手順は以下の通り:
0xC00CEE2B (WC_E_XMLCHARACTER) エラーが発生する事象が報告されています。この問題の根本原因の一つとして、XRPack 工具のバージョン違いによる出力フォーマットの非互換が挙げられます。
具体的には、XRPack Tool のバージョンによって生成される中間ファイルの形式に差異があります:
- バージョン 7.00.437:
.bamlファイルのみを出力 - バージョン 7.00.2825:
.bamlおよび.compressedファイルの両方を出力
.baml ファイルを用いると、以下の初期化処理でロード失敗が発生します:
HRESULT App::InitializeComponent()
{
RXamlSource appXaml(GetHInstance(), IDR_FRONT_LINK_UI_APP);
HRESULT hr = m_pApplication->LoadResourceDictionary(&appXaml, NULL);
if (WC_E_XMLCHARACTER == hr) {
printf("0x%x: illegal XML character\n", hr);
}
return hr;
}
.compressed ファイルも正しく生成されるようにする必要があります。
---
一方、クリーンビルド時 (例: Output\*.compressed 配下のファイルを完全削除) に以下の RC (Resource Compiler) エラーが発生することがあります:
.\Front_Link_UIGenerated.rc2(8) : error RC2135 : file not found: ..\..\OutPut\exe\Front_Link_UI\App.Compressed
.\Front_Link_UIGenerated.rc2(9) : error RC2135 : file not found: ..\..\OutPut\exe\Front_Link_UI\MainPage.Compressed
.\Front_Link_UIGenerated.rc2(10) : error RC2135 : file not found: ..\..\OutPut\exe\Front_Link_UI\Page_Link_001.Compressed
.baml のみが生成され、.compressed ファイルが生成されない状態でリソーススクリプト (.rc2) が参照しようとするためです。
回避策:
1. プロジェクトに含まれる以下のファイルを明示的に削除します:
- Front_Link_UIGenerated.h
- Front_Link_UIGenerated.rc2
2. 再度ビルドを実行すると、以下のようなコンパイルログが出力され、両フォーマット (.baml + .compressed) が正しく生成されるようになります:
1>Xaml: e:\Work\T9\MainProcess\T9_Debug\CODE\CODE_UI\BlendProject\Front_Link\Front_Link_UI\App.xaml
1>Baml: e:\Work\T9\MainProcess\T9_Debug\CODE\CODE_UI\OutPut\exe\Front_Link_UI\App.baml
1>Compile Xaml SUCCEEDED (5.2%)
1>Xaml: e:\Work\T9\MainProcess\T9_Debug\CODE\CODE_UI\BlendProject\Front_Link\Front_Link_UI\MainPage.xaml
1>Baml: e:\Work\T9\MainProcess\T9_Debug\CODE\CODE_UI\OutPut\exe\Front_Link_UI\MainPage.baml
1>Compile Xaml SUCCEEDED (26.4%)
1>Xaml: e:\Work\T9\MainProcess\T9_Debug\CODE\CODE_UI\BlendProject\Front_Link\Front_Link_UI\Page_Link_001.xaml
1>Baml: e:\Work\T9\MainProcess\T9_Debug\CODE\CODE_UI\OutPut\exe\Front_Link_UI\Page_Link_001.baml
1>Compile Xaml SUCCEEDED (-36.0%)
- ソリューションエクスプローラで対象プロジェクトを選択
- メニューから ツール > Windows Embedded Silverlight Tools > Update Silverlight for Windows Embedded Project... を実行