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

简介: 熟悉.Net资源文件体系的人都知道,中立资源程序集(Neutral Resource Assembly)的作用在于,一旦指定语言文化(Culture)的资源查找不到,便会Fallback到中立资源程序集。

 

熟悉.Net资源文件体系的人都知道,中立资源程序集(Neutral Resource Assembly)的作用在于,一旦指定语言文化(Culture)的资源查找不到,便会Fallback到中立资源程序集。因此显式指定一个中立资源程序集很重要。

在每个工程的Properties文件夹下都有一个AssemblyInfo.cs文件,打开此文件,添加以下代码:

[assembly: NeutralResourcesLanguageAttribute("en", UltimateResourceFallbackLocation.MainAssembly)]

NeutralResourcesLanguageAttribute类指定了当前程序集使用的中立资源程序集的语言文化是什么(参数1),以及去哪里查找这个中立资源程序集(参数2)。参数2是一个枚举,有两个值,一个是MainAssembly,也就是当前程序集,另外一个是Satellite,也就是卫星程序集。

但是在Silverlight工程中,当第二个参数设置为Satellite的时候,应用程序启动会抛异常。即使VS确实已经把该中立资源程序集打包到Xap中相应的文件夹里头了(需要设置csproj文件中的SupportedCultures,细节参考Silverlight 2 RTM 多国语言支持),而普通的.Net程序集则没有此问题。

在Silverlight论坛上咨询了一下,有个微软的哥们测试了半天终于发现了其中的奥秘,就是需要Edit一下Silverlight工程文件,在PropertyGroup节下添加:

<PropertyGroup>

  <UICulture>en</UICulture>

  ........

  .......

其中的en就是我们在AssemblyInfo.cs中传给NeutralResourcesLanguageAttribute的参数1。

参考贴:http://forums.silverlight.net/post/588767.aspx

感谢发帖人Jerry Weng的无私钻研~~

== Kevin Yang ==

目录
相关文章
|
Windows
艾伟_转载:Silverlight陷阱:注意程序集引用问题
  假定我要用Silverlight类库实现一些通用控件,然后在应用程序中引用这个控件库。当然,控件通常也要访问其他一些第三方或开源的开发包,例如Silverlight Toolkit。   于是这个项目的依赖关系如下: Silverlight Application => Silverlight Control => Silverlight Toolkit。
1008 0
|
Web App开发
一起谈.NET技术,Silverlight 资源的使用
我们在Silverlight 项目中,新加一个文件,比如一个图片文件,这个文件的属性会有下面2个选项,这两个选项决定了这个图片资源如何存储,如何使用。 先说简单的,资源文件的 Copy to OutPut Directory 属性, 这个属性有如下三个选项: 他们都是在程序编译或者部署时,判断此资源文件是否要同步用的。
1385 0
|
Web App开发 缓存 UED
一起谈.NET技术,Silverlight程序集缓存巧妙设置 优化用户体验
  Silverlight中的程序集缓存可以将一些独立的程序集放在XAP包外边并可以缓存在客户端的浏览器中,这样就可以减少程序启动时下载XAP包的时间。默认情况下Silverlight并没有开启程序集缓存,因此需要自己动手开启。
1132 0

热门文章

最新文章