Silverlight C++ XRPack 版本不兼容&资源编译

使用:Silverlight C++
在为了解决错误 :0XC00CEE2B 时在网上查找到不同的 XRPack 的兼容性有问题,如下链接:
https://social.msdn.microsoft.com/Forums/en-US/c28d5513-984e-4c2f-bd02-fa59b8ddb517/embedded-silverlight-on-wec7-fails-to-start-with-hresult-of-0xc00cee2b?forum=winembnatapp
不同版本的 XRPack 生成的 *.baml 和 *.Compressed 不能通用
XRPack version 7.00.437:只生成了 *.baml
XRPack version 7.00.2825:生成了 *.baml 和 *.Compressed
当使用 XRPack version 7.00.437 生成的 *.baml 时,LoadResourceDictionary() 失败。错误信息如下代码所示:

 1 HRESULT App::InitializeComponent()  
 2 {  
 3     RXamlSource appXaml(GetHInstance(), IDR_FRONT_LINK_UI_APP);  
 4     HRESULT hr = m_pApplication->LoadResourceDictionary(&appXaml,NULL);  
 5     if(WC_E_XMLCHARACTER == hr)     // Error Code: 0XC00CEE2B  
 6     {  
 7         printf("0x%x: illegal xml character",hr);  
 8     }  
 9     return hr;  
10 } // InitializeComponent  

将 XRPack 的版本更换为:XRPack version 7.00.2825:后就能生成了 *.baml 和 *.Compressed,且没有上述 0XC00CEE2B 的出错。

如果将调试生成的目录中的文件全部删除,再次编译时会出现如下错误:

1>.Front_Link_UIGenerated.rc2(8) : error RC2135 : file not found: ....OutPutexeFront_Link_UIApp.Compressed  
1>.Front_Link_UIGenerated.rc2(9) : error RC2135 : file not found: ....OutPutexeFront_Link_UIMainPage.Compressed  
1>.Front_Link_UIGenerated.rc2(10) : error RC2135 : file not found: ....OutPutexeFront_Link_UIPage_Link_001.Compressed  

App.baml/App.Compressed,MainPage.baml/MainPage.Compressed,Page_Link_001.baml/Page_Link_001.Compressed 中后缀为 *.baml 的文件生成了,但后缀为 *.Compressed 的没有生成。
解决方法:
将 Front_Link_UIGenerated.h 和 Front_Link_UIGenerated.rc2 文件删除。
再次编译,可以看到如下编译 LOG:

1>Xaml: e:WorkT9MainProcessT9_DebugCODECODE_UIBlendProjectFront_LinkFront_Link_UIApp.xaml  
1>Baml: e:WorkT9MainProcessT9_DebugCODECODE_UIOutPutexeFront_Link_UIApp.baml  
1>Compile Xaml SUCCEEDED (5.2%)  
1>Xaml: e:WorkT9MainProcessT9_DebugCODECODE_UIBlendProjectFront_LinkFront_Link_UIMainPage.xaml  
1>Baml: e:WorkT9MainProcessT9_DebugCODECODE_UIOutPutexeFront_Link_UIMainPage.baml  
1>Compile Xaml SUCCEEDED (26.4%)  
1>Xaml: e:WorkT9MainProcessT9_DebugCODECODE_UIBlendProjectFront_LinkFront_Link_UIPage_Link_001.xaml  
1>Baml: e:WorkT9MainProcessT9_DebugCODECODE_UIOutPutexeFront_Link_UIPage_Link_001.baml  
1>Compile Xaml SUCCEEDED (-36.0%)  

在 Blend 中修改了页面后,是需要导入到 VS2008 的。导入方法:
先在“解决方案资源管理器”中选中要更新的项目,点击菜单“工具”,依次选择:Windows Embedded Silverlight Tools -> Update Silverlight for windows Embedded Project...

原文地址:https://www.cnblogs.com/91program/p/5200567.html