词条 | 卫星程序集 |
释义 | 什么是卫星程序集在进行程序的国际化过程中,我常把包含特定语言文化资源打包放进程序集中,只是包含一些字符串、图片等等资源,而不包含任何代码,这样的程序集叫做卫星程序集。 卫星程序集的应用和版本号一样,程序集还将语言文化作为其标识的一部分。例如,我可能有一个专门用于德语的程序集,一个用于瑞士德语的程序集和一个用于美国英语的程序集。语言文化通过一个包含主标记和次标记的字符串来标识。 一般来说,如果创建的是包含代码的程序集,就没有必要指定语言文化。这是因为代码代码通常不包含任何特定的语言文化。没有指定语言文化的程序集是culture neutral的。 如果你设计的应用程序包含特定的语言文化资源,微软强烈建议你创建包含代码和应用程序默认(或后备)资源的程序集。在生成程序集时,不用指定语言文化。该程序集将被其他程序集引用,来创建和操作类型。 现在,你可以创建一个或多个只包含特定语言的单独的程序集——不包含任何代码。使用语言文化标记的程序集称为卫星程序集(satellite assembly)。它们指定了能够正确反映其中资源的语言文化。应该为支持的所有语言文化创建卫星程序集。 通常使用AL.exe创建卫星程序集,而不必使用编译器,因为卫星程序集中不应该包含代码。在使用AL.exe时,使用/c[ulture]:text开关来指定所需的语言文化,text为字符串,如en_US代表美国英语。在部署卫星程序集时,要将其放置在与语言文化的text相符的子目录中。例如,如果应用程序根目录为C:\\MyApp,美国英语的卫星程序集应该在C:\\MyApp\\en-US子目录中。在运行时,使用System.Resources.ResourceManager类访问卫星程序集的资源。 注意,创建包含代码的卫星程序集是可能的,尽管并不提倡这么做。如果你愿意,可以使用System.Reflection.AssemblyCultureAttribute自定义特性来指定语言文化。例如: // Set assembly's culture to Swiss German [assembly: AssemblyCulture("de-CH")] 通常情况下,不应该创建引用卫星程序集的程序集。换句话说,一个程序集的AssemblyRef条目指向的应该都是语言文化中性(culture-neotral)的程序集。如果要访问包含在卫星程序集中的类型或成员,你应该使用反射技术。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。