loyung

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

这些天在用Microsoft的Prims框架整一个公司项目,刚把Bootstrapper,Module建好要调试直接跳出个错误:
消息: Silverlight 应用程序中未处理的错误
代码: 4004   
类别: ManagedRuntimeError      
消息: System.IO.FileNotFoundException: 未能加载文件或程序集“Microsoft.Practices.Prism.UnityExtensions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。
文件名:“Microsoft.Practices.Prism.UnityExtensions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”
   位于 TimberPX.App.Application_Startup(Object sender, StartupEventArgs e)
   位于 MS.Internal.CoreInvokeHandler.InvokeEventHandler(UInt32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
   位于 MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName, UInt32 flags)   

当时就郁闷了,一直都正在用的Microsoft.Practices.Prism.dll

              Microsoft.Practices.Prism.UnityExtensions.dll

              Microsoft.Practices.ServiceLocation.dll

              Microsoft.Practices.Unity.Silverlight.dll

怎么突然就不能加载了呢?

立马就想到了度娘和谷哥。百度后说是神马文件字体丢失,但这个真心的不懂,并且我之前并没有对字体做过操作,马上排除。之后又一同仁儿索性把错误翻译之后说好理解,但是不管怎么翻译仍旧看不出个所以然来。后来看到有很多的4004错误,除了加载文件和版本不同外后边的Culture,PublicKeyToken参数完全相同,于是乎被错误的理解为版本问题或者是Runtime出问题,有了重装FormWork的冲动,但出于效率考虑还是忍忍吧!

后来在CodePlex上看到了几篇过于不能加载Microsoft.Practices.Prism.UnityExtensions.dll的帖子,可能之后大家遇到的问题未必只是这一种,遇到问题也可以参考一下这里
。里边有对prims的很多介绍,但是看了这么多似乎跟我遇到的都有些扯不上关系。

快要下班了,这不能一天过来调个错还没调好就回去,这是不是有点……大家懂得!之后就抛下了度娘和谷哥两位大神,自力更生奋斗下去。经过细细的排查发现,这问题不是直接因为Microsoft.Practices.Prism.UnityExtensions.dll所导致的,这样就好很多起码在prims这一块没有问题,就开始继续找终于自最后发现时缺失System.Windows.Controls,终于看到了希望!不过后来我在之前的项目中看到没有这个明明空间的引用也是可以加载的,另外默认情况下System.Windows.Controls是不被引用的。。

再啰嗦两句,但这个是细节关系,不要忘记了。要在引用的命名空间右键修改其属性“复制本地”改为TRUE,否则还是不能解决为题的。直接上图好了:

——Loyung(OceanEyes)

posted on 2013-04-28 18:04  loyung  阅读(5017)  评论(0编辑  收藏  举报