.NET精简框架的“无法找到资源程序集”异常释疑

程序

在做 .NET Compact Framework 开发的过程中,特别是访问 Web Service 的时候,常常会遇到这样的异常信息:“无法找到资源程序集”或"Could not find resource assembly"。比较让人纳闷的是,明明是要访问 Web Service,跟资源程序集有什么关系呢?为什么会用到资源程序集呢?什么是资源程序集呢?

被这个问题困扰了很久,现在终于解开了迷题。

这个异常信息是这样产生的:在 .NET CF 应用程序访问 Web Service 的时候,程序因为某种原因(如:访问不到网络)要抛出一个异常,而这个异常的错误信息要从字符串资源程序集中获取(如:System.SR.dll),但是程序在GAC(全局程序集缓冲,在 "\Windows\" 目录)和程序目录(如:"\Program Files\SmartDeviceApp1")都找不到这个程序集,所以抛出了一个“无法找到资源程序集”或"Could not find resource assembly"的异常。说得直白一点,就是程序在抛出一个异常的时候,又遇到错误并抛出一个新的异常。所以我们看到的“无法找到资源程序集”的异常信息,并非是程序真正的错误信息。

有些朋友就郁闷了,我的 Windows Mobile 5.0 明明安装了(手工复制到设备上执行并安装或者在调试程序的时候自动安装)System_SR_CHS.cab(中文简体的资源程序集安装包),所以 System.SR.dll 和 System.SR.Resources.zh-CHS.dll 这两个程序集应该都已经被安装到 GAC 了,怎么程序还是找不到这两个程序集呢?对于这个问题,很可能是 System.SR.dll 和 System.SR.Resources.zh-CHS.dll 这两个程序集并没有被成功安装到 GAC。我们可以通过PC的资源管理器浏览设备的 "\Windows\" 目录看个究竟。如果这两个文件是按原来的文件名(即 "System.SR.dll" 和 "System.SR.Resources.zh-CHS.dll")存放在"\Windows\"目录,那么证明它们没有被成功安装到GAC。安装成功的话,它们的文件名应该是类似 "GAC_System.SR_v1_0_5000_0_cneutral_1.dll" 和 "GAC_System.SR.resources_v1_0_5000_0_czh-CHS_1.dll"。

现在我们知道原因了,下面就介绍如何解决它。

比较保险的做法是在智能设备项目中引用 System.SR.dll 这个程序集。在部署的时候,这个文件就会被复制到程序目录,打包的时候文件会被包含在生成的CAB文件中。System.SR.dll 的文件大小是93.6KB,会增加不少智能设备应用程序的存储内存空间。

时间: 2024-10-31 15:51:47

.NET精简框架的“无法找到资源程序集”异常释疑的相关文章

.net精简框架集下的ini文件读取(C#)

        无论是.net框架集还是.net精简框架集都能非常完美的支持XML文件,并且微软也强烈建议用xml文件取代ini文件,但是在工控领域大部分的工程都是采用ini文件配置的系统信息的.        以前的隧道管理系统是采用ini文件配置信息的,为了实现兼容,只好在下位机也采用ini文件配置信息.由于WinCE平台不提供ini文件读取的api函数GetPrivateProfileString,所以需要自行编写,前一段时间提供了一个EVC版本的ini文件读取,后来在DA66x的WinC

基于Silverlight的精简框架之应用

接上篇"基于Silverlight的精简框架之解析",最近研究了ExtJs,发现其虽然外观很酷,但是开发难 度比较大,大量JS不易维护,于是乎想起基于EasySL框架,实现ExtJs的部分功能.比较起来SL的UI和异步 机制很容易实现,特别是SL类似于winform的控件开发方式,给开发丰富的RIA提供强大的支持. 一.此次主要是展示一个后台管理UI: 1. 登陆.列表.分页.添加.修改.删除,使用了双向绑定机制,界面元素和实体进行绑定,自动对 界面进行取值赋值; 2. 其异步数据交互

基于Silverlight的精简框架之介绍

Silverlight的数据请求需要架设wcf.webservice或者webclient,而且中间数据需要序列化和反序列 化,或者自己用linq解析,易用性不是很强,且比较麻烦,基于目前还没有统一和规范的silverlight开 发模式,所以从五六个自己做过的基于Silverlight的中型项目,抽出核型代码形成一套精简框架,方便 调用,扩充和分布式部署. 项目文件说明: EasySL.Controls 封装了一些基于Silverlight的自定义控件,目前还没加进来 EasySL.Core

基于Silverlight的精简框架之解析

接上篇"基于Silverlight的精简框架之介绍",Silverlight的数据请求需要架设wcf.webservice或 者webclient,而且中间数据需要序列化和反序列化,或者自己用linq解析,易用性不是很强,且比较麻 烦,基于目前还没有统一和规范的silverlight开发模式,所以从五六个自己做过的基于Silverlight的中 型项目,抽出核型代码形成一套精简框架,方便调用,扩充和分布式部署. 一.框架整体分为5块(界面.服务端.业务逻辑层.数据访问层.通用层),包含

在学习配置IIS,请问有大神知道发布网站之后无法找到资源是怎么回事吗?

问题描述 在学习配置IIS,请问有大神知道发布网站之后无法找到资源是怎么回事吗? 解决方案 点"默认网站",选择右边的绑定,看看有没有绑定8080端口和本地ip 解决方案二: 你的网站的首页是default.aspx么?这个页面是否存在? 解决方案三: 看一下IIS默认页面有没有Default.aspx 这个页面.另外在浏览器 地址栏中输入完整的url 你前面的地址+Default.aspx 解决方案四: 试一下 ,如果全地址能够打开页面 则是默认地址配置问题,如果不能打开则是别的问题

无法找到资源。 说明: HTTP 404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确

问题描述 法找到资源.说明:HTTP404.您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用.请检查以下URL并确保其拼写正确.请求的URL:/Aquaculture/department/Purchase.aspx请高手们帮忙看看,是哪写错了,这是登录的后台,我想实现选择不同部门,跳转到不同页面,然后就一直报上面那个错误代码如下:usingSystem;usingSystem.Collections;usingSystem.Configuration;using

C/C++ 框架,类库,资源集合

很棒的 C/C++ 框架,类库,资源集合. Awesome C/C++ Standard Libraries Frameworks Artificial Intelligence Asynchronous Event Loop Audio Biology Compression Concurrency Containers Cryptography Database Debug Game Engine GUI Graphics Image Processing Internationalizat

“/”应用程序中的服务器错误。 无法找到资源。

问题描述 "/"应用程序中的服务器错误.无法找到资源.说明:HTTP404.您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用.请检查以下URL并确保其拼写正确.请求的URL:/好久没用MVC今天一用就出现了这种问题,完全不知道为什么出错了啊--链接各种换都不行,我的默认链接一直是http://localhost:62171,加/Controllers/Account的话还是一样的错,但是只加/Controllers的话就变成这样了一个渣渣求大神们解救啊

Silverlight中无法设置卫星程序集为中立资源程序集

  熟悉.Net资源文件体系的人都知道,中立资源程序集(Neutral Resource Assembly)的作用在于,一旦指定语言文化(Culture)的资源查找不到,便会Fallback到中立资源程序集.因此显式指定一个中立资源程序集很重要. 在每个工程的Properties文件夹下都有一个AssemblyInfo.cs文件,打开此文件,添加以下代码: [assembly: NeutralResourcesLanguageAttribute("en", UltimateResour